Files
dingtalk-workspace-cli/internal/shortcut/minutesdata/workflow_test.go

71 lines
3.2 KiB
Go

// Copyright 2026 Alibaba Group
// Licensed under the Apache License, Version 2.0
package minutesdata
import (
"encoding/json"
"testing"
)
func TestCrossPlatformCoverageMinutesWorkflowShapesRejectUnknownE2E(t *testing.T) {
if err := RequireWriteAcknowledgement("write", map[string]any{}); err == nil {
t.Fatal("bare write response accepted")
}
if _, err := HotWords(map[string]any{"success": true, "result": map[string]any{}}); err == nil {
t.Fatal("missing hot-word list accepted")
}
if _, _, err := MindGraphStatus(map[string]any{"success": true, "result": map[string]any{}}); err == nil {
t.Fatal("missing mind graph status accepted")
}
if _, _, err := MindGraphStatus(map[string]any{"success": true, "result": map[string]any{"taskStatus": 1.5}}); err == nil {
t.Fatal("fractional mind graph status accepted")
}
if _, err := SpeakerSummaryResult(map[string]any{"success": true, "result": map[string]any{}}); err == nil {
t.Fatal("empty speaker summary accepted")
}
}
func TestCrossPlatformCoverageMinutesPermissionMutationRequiresExactResultMap(t *testing.T) {
for _, data := range []map[string]any{
{"success": true, "result": map[string]any{}},
{"success": true, "result": map[string]any{"resultMap": map[string]any{}}},
{"success": true, "result": map[string]any{"resultMap": map[string]any{"u1": []any{}}}},
{"success": true, "result": map[string]any{"resultMap": map[string]any{"other": []any{"m1"}}}},
} {
if err := RequirePermissionMutationAcknowledgement("unshare", []string{"u1"}, []string{"m1"}, data); err == nil {
t.Fatalf("incomplete permission acknowledgement accepted: %#v", data)
}
}
valid := map[string]any{
"success": true,
"result": map[string]any{"resultMap": map[string]any{"u1": []any{"m1"}}},
}
if err := RequirePermissionMutationAcknowledgement("unshare", []string{"u1"}, []string{"m1"}, valid); err != nil {
t.Fatalf("valid permission acknowledgement rejected: %v", err)
}
}
func TestCrossPlatformCoverageMinutesWorkflowObservedShapesE2E(t *testing.T) {
record, err := RecordResult("pause", "u1", map[string]any{"success": true, "result": map[string]any{"cmd": "pause", "uuid": "u1"}})
if err != nil || record["cmd"] != "pause" {
t.Fatalf("record=%#v err=%v", record, err)
}
status, _, err := MindGraphStatus(map[string]any{"success": true, "result": map[string]any{"taskStatus": float64(1)}})
if err != nil || status != 1 {
t.Fatalf("mind status=%d err=%v", status, err)
}
status, _, err = MindGraphStatus(map[string]any{"success": true, "result": map[string]any{"taskStatus": json.Number("1")}})
if err != nil || status != 1 {
t.Fatalf("number-preserving mind status=%d err=%v", status, err)
}
taskID, state, err := SpeakerSummaryTask(map[string]any{"success": true, "result": map[string]any{"taskId": "job-1", "status": "processing"}})
if err != nil || taskID != "job-1" || state != "processing" {
t.Fatalf("speaker task=%q state=%q err=%v", taskID, state, err)
}
words, err := HotWords(map[string]any{"success": true, "result": map[string]any{"hotWordList": []any{"DWS", map[string]any{"hotWord": "听记"}}}})
if err != nil || len(words) != 2 || words[1] != "听记" {
t.Fatalf("words=%#v err=%v", words, err)
}
}