61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package uiaselector
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestDefaultCatalogContainsInitialN13Selectors(t *testing.T) {
|
|
catalog := DefaultCatalog()
|
|
wantIDs := []string{
|
|
"main_window",
|
|
"main_plugin_tab",
|
|
"home_page_window",
|
|
"tab_page_content",
|
|
"left_panel",
|
|
"roster_panel",
|
|
"roster_view",
|
|
"fuzzy_query_panel",
|
|
"fuzzy_query_window",
|
|
"fuzzy_search_edit",
|
|
}
|
|
|
|
byID := map[string]Selector{}
|
|
for _, selector := range catalog {
|
|
byID[selector.ID] = selector
|
|
}
|
|
|
|
for _, id := range wantIDs {
|
|
selector, ok := byID[id]
|
|
if !ok {
|
|
t.Fatalf("DefaultCatalog missing selector %q", id)
|
|
}
|
|
if selector.AllowedUse != AllowedUseReadOnlyLocate {
|
|
t.Fatalf("selector %q allowed_use = %q, want %q", id, selector.AllowedUse, AllowedUseReadOnlyLocate)
|
|
}
|
|
if selector.Required.AutomationID == "" {
|
|
t.Fatalf("selector %q must require automation_id", id)
|
|
}
|
|
if selector.Required.ControlType == "" {
|
|
t.Fatalf("selector %q must require control_type", id)
|
|
}
|
|
if selector.StabilityScore < 80 {
|
|
t.Fatalf("selector %q stability_score = %d, want >= 80", id, selector.StabilityScore)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDefaultCatalogDoesNotDescribeActionTools(t *testing.T) {
|
|
for _, selector := range DefaultCatalog() {
|
|
if selector.AllowedUse != AllowedUseReadOnlyLocate {
|
|
t.Fatalf("selector %q allowed_use = %q, want read-only", selector.ID, selector.AllowedUse)
|
|
}
|
|
lower := strings.ToLower(selector.ID + " " + selector.Description)
|
|
for _, forbidden := range []string{"send", "upload", "download", "receive", "conversation", "login", "file_transfer"} {
|
|
if strings.Contains(lower, forbidden) {
|
|
t.Fatalf("selector %q contains action word %q", selector.ID, forbidden)
|
|
}
|
|
}
|
|
}
|
|
}
|