The test was duplicating the icon selection logic in a switch statement instead of calling the actual function being tested. Extract the icon logic into getMigrationStatusIcon() and have the test call it directly. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
package cmd
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/steveyegge/gastown/internal/beads"
|
|
)
|
|
|
|
func TestMigrationResultStatus(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
result migrationResult
|
|
wantIcon string
|
|
}{
|
|
{
|
|
name: "migrated shows checkmark",
|
|
result: migrationResult{
|
|
OldID: "gt-mayor",
|
|
NewID: "hq-mayor",
|
|
Status: "migrated",
|
|
Message: "successfully migrated",
|
|
},
|
|
wantIcon: " ✓",
|
|
},
|
|
{
|
|
name: "would migrate shows checkmark",
|
|
result: migrationResult{
|
|
OldID: "gt-mayor",
|
|
NewID: "hq-mayor",
|
|
Status: "would migrate",
|
|
Message: "would copy state from gt-mayor",
|
|
},
|
|
wantIcon: " ✓",
|
|
},
|
|
{
|
|
name: "skipped shows empty circle",
|
|
result: migrationResult{
|
|
OldID: "gt-mayor",
|
|
NewID: "hq-mayor",
|
|
Status: "skipped",
|
|
Message: "already exists",
|
|
},
|
|
wantIcon: " ⊘",
|
|
},
|
|
{
|
|
name: "error shows X",
|
|
result: migrationResult{
|
|
OldID: "gt-mayor",
|
|
NewID: "hq-mayor",
|
|
Status: "error",
|
|
Message: "failed to create",
|
|
},
|
|
wantIcon: " ✗",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
icon := getMigrationStatusIcon(tt.result.Status)
|
|
if icon != tt.wantIcon {
|
|
t.Errorf("getMigrationStatusIcon(%q) = %q, want %q", tt.result.Status, icon, tt.wantIcon)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestTownBeadIDHelpers(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
got string
|
|
want string
|
|
}{
|
|
{"MayorBeadIDTown", beads.MayorBeadIDTown(), "hq-mayor"},
|
|
{"DeaconBeadIDTown", beads.DeaconBeadIDTown(), "hq-deacon"},
|
|
{"DogBeadIDTown", beads.DogBeadIDTown("fido"), "hq-dog-fido"},
|
|
{"RoleBeadIDTown mayor", beads.RoleBeadIDTown("mayor"), "hq-mayor-role"},
|
|
{"RoleBeadIDTown witness", beads.RoleBeadIDTown("witness"), "hq-witness-role"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if tt.got != tt.want {
|
|
t.Errorf("%s = %q, want %q", tt.name, tt.got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|