100 lines
3.8 KiB
Go
100 lines
3.8 KiB
Go
// Copyright 2026 Alibaba Group
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
package helpers
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/DingTalk-Real-AI/dingtalk-workspace-cli/internal/corecmd/runtimeannotate"
|
|
)
|
|
|
|
func TestAisearchPersonFlagsDoNotLeakIntoContentCommands(t *testing.T) {
|
|
root := newAisearchCommand()
|
|
person, _, err := root.Find([]string{"person"})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, name := range []string{"query", "dimension"} {
|
|
flag := person.Flags().Lookup(name)
|
|
if flag == nil || flag.Hidden {
|
|
t.Fatalf("person --%s = %#v, want visible local flag", name, flag)
|
|
}
|
|
}
|
|
if person.Flags().Lookup("query").Shorthand != "" {
|
|
t.Fatal("new Primary --query must not acquire a shorthand")
|
|
}
|
|
keyword := person.Flags().Lookup("keyword")
|
|
if keyword == nil || !keyword.Hidden || keyword.Shorthand != "w" {
|
|
t.Fatalf("person --keyword = %#v, want hidden legacy flag with -w", keyword)
|
|
}
|
|
if got := keyword.Annotations[runtimeannotate.AnnotationFlagAliasOf]; len(got) != 1 || got[0] != "query" {
|
|
t.Fatalf("person --keyword alias_of = %#v, want query", got)
|
|
}
|
|
if got := keyword.Annotations[runtimeannotate.AnnotationFlagAliasOrigin]; len(got) != 1 || got[0] != runtimeannotate.FlagAliasOriginCorecmdV1 {
|
|
t.Fatalf("person --keyword alias_origin = %#v, want %q", got, runtimeannotate.FlagAliasOriginCorecmdV1)
|
|
}
|
|
for _, name := range []string{"name", "q", "text"} {
|
|
flag := person.Flags().Lookup(name)
|
|
if flag == nil || !flag.Hidden {
|
|
t.Fatalf("person --%s = %#v, want preserved hidden guess flag", name, flag)
|
|
}
|
|
if got := flag.Annotations[runtimeannotate.AnnotationFlagAliasOf]; len(got) != 0 {
|
|
t.Fatalf("person --%s unexpectedly gained alias_of metadata: %#v", name, got)
|
|
}
|
|
}
|
|
|
|
for _, path := range []string{"enterprise", "behavior"} {
|
|
cmd, _, err := root.Find([]string{path})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if flag := cmd.Flags().Lookup("dimension"); flag != nil {
|
|
t.Fatalf("%s unexpectedly accepts person-only --dimension", path)
|
|
}
|
|
for _, name := range []string{"keyword", "query"} {
|
|
flag := cmd.Flags().Lookup(name)
|
|
if flag == nil || !flag.Hidden {
|
|
t.Fatalf("%s --%s = %#v, want hidden compatibility flag", path, name, flag)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAisearchPersonQueryPrimaryCompatibility(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
args []string
|
|
want string
|
|
}{
|
|
{name: "root new", args: []string{"--query", "new"}, want: "new"},
|
|
{name: "root old", args: []string{"--keyword", "old"}, want: "old"},
|
|
{name: "root old shorthand", args: []string{"-w", "old-short"}, want: "old-short"},
|
|
{name: "root both old wins", args: []string{"--query", "new", "--keyword", "old"}, want: "old"},
|
|
{name: "person new", args: []string{"person", "--query", "new"}, want: "new"},
|
|
{name: "person old", args: []string{"person", "--keyword", "old"}, want: "old"},
|
|
{name: "person old shorthand", args: []string{"person", "-w", "old-short"}, want: "old-short"},
|
|
{name: "person both old wins", args: []string{"person", "--query", "new", "--keyword", "old"}, want: "old"},
|
|
}
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
caller := &scriptedToolCaller{}
|
|
installScriptedCaller(t, caller)
|
|
if err := executeFilterCoverage(t, newAisearchCommand(), tc.args...); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if caller.tool != "enterprise_person_search" || caller.args["keyword"] != tc.want {
|
|
t.Fatalf("call = %s %#v, want backend keyword %q", caller.tool, caller.args, tc.want)
|
|
}
|
|
})
|
|
}
|
|
|
|
installScriptedCaller(t, &scriptedToolCaller{})
|
|
err := executeFilterCoverage(t, newAisearchCommand(), "person")
|
|
if err == nil || !strings.Contains(err.Error(), "--query") || strings.Contains(err.Error(), "--keyword") {
|
|
t.Fatalf("missing query error = %v, want only new Primary", err)
|
|
}
|
|
}
|