Files
dingtalk-workspace-cli/internal/shortcut/devapp/devapp_rollout_test.go

56 lines
1.8 KiB
Go

// Copyright 2026 Alibaba Group
// Licensed under the Apache License, Version 2.0 (the "License");
package devapp
import (
"testing"
"github.com/DingTalk-Real-AI/dingtalk-workspace-cli/internal/output"
"github.com/DingTalk-Real-AI/dingtalk-workspace-cli/internal/shortcut"
)
func TestDevAppShortcutsRollOutPerTerminalCommand(t *testing.T) {
active := map[string]bool{
"+list": true, "+get": true, "+webapp-get": true,
"+permission-list": true, "+event-list": true, "+version-list": true,
"+robot-get": true, "+version-get": true,
"+version-check-approval": true, "+version-status": true,
}
seen := map[string]bool{}
for _, item := range shortcut.All() {
if item.Service != productDevApp {
continue
}
seen[item.Command] = true
want := output.RolloutDualValidate
if active[item.Command] {
want = output.RolloutUnifiedActive
}
if item.OutputRollout != want {
t.Errorf("%s rollout=%s, want %s", item.Command, item.OutputRollout, want)
}
if want == output.RolloutUnifiedActive && item.Contract.Empty() {
t.Errorf("%s is unified_active without a reviewed Contract", item.Command)
}
if want == output.RolloutUnifiedActive && item.Contract.Result == nil {
t.Errorf("%s is unified_active without a reviewed result contract", item.Command)
}
}
for name := range active {
if !seen[name] {
t.Errorf("active pilot shortcut %s is not registered", name)
}
}
for _, paginated := range []string{"+list", "+permission-list", "+event-list", "+version-list"} {
if !seen[paginated] {
t.Errorf("paginated shortcut %s is not registered", paginated)
}
for _, item := range shortcut.All() {
if item.Service == productDevApp && item.Command == paginated && item.Contract.Pagination == nil {
t.Errorf("paginated shortcut %s has no standalone pagination contract", paginated)
}
}
}
}