package catalogue import ( "slices" "testing" ) // Every provider may say what becomes of a consumer the mesh stopped asking for (novox/hq ADR 0230), // whatever its manifest lists — as it may say a consumer it keeps failing (ADR 0224) — and a module // that receives nothing may not. func TestEveryProviderMaySayWhatItRetires(t *testing.T) { provider := Manifest{Module: "pg", Receives: map[string]string{"postgres-database": "/x/mesh.json"}, Emits: []string{"database.provisioned"}} for _, e := range []string{ProvisionerFailing, ProvisionerRecovered, ProvisionerRetirement, "database.provisioned"} { if !slices.Contains(provider.EmitsAll(), e) { t.Errorf("a provider may not emit %s: %v", e, provider.EmitsAll()) } } if slices.Contains(Manifest{Module: "app", Emits: []string{"x"}}.EmitsAll(), ProvisionerRetirement) { t.Error("a module that provides nothing may say what it retires") } }