Files
sub2api-cn-relay-manager/internal/provision/rollback_service_test.go
phamnazage-jpg 71cbaf5fa6 test(project): achieve ≥70% package coverage across all internal packages
- store/sqlite: 75.4% (repos + db coverage)
- host/sub2api: 80.8% (httptest mock server, pure function tests)
- app: 74.2% (handler error paths, NewActionSet closures)
- pack: 72.4%
- provision: 75.2%
- access: 77.3%
- config: 94.7% (lookup mock tests)

All tests pass: build, vet, race, coverage gates.
2026-05-15 19:26:25 +08:00

51 lines
1.9 KiB
Go

package provision
import (
"context"
"reflect"
"testing"
"sub2api-cn-relay-manager/internal/host/sub2api"
)
func TestRollbackServiceDeletesManagedResourcesInDependencyOrder(t *testing.T) {
host := &fakeHostAdapter{
managedSnapshot: sub2api.ManagedResourceSnapshot{
Groups: []sub2api.NamedResource{{ID: "group_1", Name: "crm-deepseek-group"}},
Channels: []sub2api.NamedResource{{ID: "channel_1", Name: "crm-deepseek-channel"}},
Plans: []sub2api.NamedResource{{ID: "plan_1", Name: "crm-deepseek-plan"}},
Accounts: []sub2api.NamedResource{{ID: "account_1", Name: "deepseek-01"}, {ID: "account_2", Name: "deepseek-02"}},
},
}
svc := NewRollbackService(host)
report, err := svc.Rollback(context.Background(), RollbackRequest{Provider: sampleProviderManifest()})
if err != nil {
t.Fatalf("Rollback() error = %v", err)
}
if report.AccountsDeleted != 2 || report.PlansDeleted != 1 || report.ChannelsDeleted != 1 || report.GroupsDeleted != 1 {
t.Fatalf("Rollback() report = %+v, want all managed resources deleted", report)
}
want := []string{"account:account_2", "account:account_1", "plan:plan_1", "channel:channel_1", "group:group_1"}
if !reflect.DeepEqual(host.deletedResources, want) {
t.Fatalf("deleted resources = %#v, want %#v", host.deletedResources, want)
}
}
func TestRollbackServiceReturnsEmptyReportWhenNoManagedResourcesExist(t *testing.T) {
host := &fakeHostAdapter{}
svc := NewRollbackService(host)
report, err := svc.Rollback(context.Background(), RollbackRequest{Provider: sampleProviderManifest()})
if err != nil {
t.Fatalf("Rollback() error = %v", err)
}
if report.AccountsDeleted != 0 || report.PlansDeleted != 0 || report.ChannelsDeleted != 0 || report.GroupsDeleted != 0 {
t.Fatalf("Rollback() report = %+v, want zero deletions", report)
}
if len(host.deletedResources) != 0 {
t.Fatalf("deleted resources = %#v, want none", host.deletedResources)
}
}