diff --git a/internal/server/operator_org_type_change_test.go b/internal/server/operator_org_type_change_test.go index afe3da9a..ffadf5a6 100644 --- a/internal/server/operator_org_type_change_test.go +++ b/internal/server/operator_org_type_change_test.go @@ -166,6 +166,7 @@ func otcScalar(t *testing.T, database *sql.DB, query string, args ...any) int { // operator person, and two single-tier ladders A and B. type otcFixture struct { orgType string + displayName string operatorID string ladderA, prodA string ladderB, prodB string @@ -182,10 +183,10 @@ func newOtcFixture(t *testing.T, database *sql.DB) otcFixture { } defer tx.Rollback() - f := otcFixture{orgType: "otc-" + sfx} + f := otcFixture{orgType: "otc-" + sfx, displayName: "OTC " + sfx} if _, err := tx.ExecContext(ctx, `INSERT INTO core.org_types (org_type, display_name, is_active) VALUES ($1, $2, true)`, - f.orgType, "OTC "+sfx, + f.orgType, f.displayName, ); err != nil { t.Fatalf("org type: %v", err) } diff --git a/internal/server/operator_org_type_default_request_test.go b/internal/server/operator_org_type_default_request_test.go index 11f8dcce..7e9f2192 100644 --- a/internal/server/operator_org_type_default_request_test.go +++ b/internal/server/operator_org_type_default_request_test.go @@ -209,6 +209,23 @@ func TestOrgTypeDefaultChange_NoDrainForAnActTheRequestFinished(t *testing.T) { } } +// The success toast names the organization type by its display name, as the +// card's heading does, not by its key. +func TestOrgTypeDefaultChange_ToastNamesTheDisplayName(t *testing.T) { + database := dbtest.Open(t) + f := newOtcFixture(t, database) + h := newOtcHarnessWith(t, database, f.operatorID, otcOptions{}) + otcHolders(t, database, f, 2, false) + + toast := commitB(h, f, "migrate").Header().Get("HX-Trigger") + if want := "Default change committed for " + f.displayName + ": 2 migrated."; !strings.Contains(toast, want) { + t.Errorf("the toast %q, want %q", toast, want) + } + if strings.Contains(toast, f.orgType) { + t.Errorf("the toast %q names the key %q", toast, f.orgType) + } +} + // A read of the toast's counts that fails leaves the parts it could not read out // of the success toast, logs the failure with the act id, and starts the drain // only if work is left. @@ -248,7 +265,7 @@ func TestOrgTypeDefaultChange_UnreadPendingObligationsStopTheRequestAndStartTheD rec := commitB(h, f, "migrate") toast := rec.Header().Get("HX-Trigger") - if !strings.Contains(toast, "showSuccessToast") || !strings.Contains(toast, "Default change committed for "+f.orgType+".") { + if !strings.Contains(toast, "showSuccessToast") || !strings.Contains(toast, "Default change committed for "+f.displayName+".") { t.Errorf("the toast %q, want the success toast without counts", toast) } if n := otcScalar(t, database, `SELECT count(*) FROM core.plan_act_obligations WHERE org_type = $1 AND status = 'settled'`, f.orgType); n != 0 { diff --git a/internal/server/operator_org_types.go b/internal/server/operator_org_types.go index 80b581b2..5309bdcd 100644 --- a/internal/server/operator_org_types.go +++ b/internal/server/operator_org_types.go @@ -271,9 +271,10 @@ func (r *OrgTypeChangeResult) summaryParts() []string { return parts } -// DefaultChangeToast is the success toast of a default change that committed. -func (r *OrgTypeChangeResult) DefaultChangeToast(orgType string) string { - return r.toast(fmt.Sprintf("Default change committed for %s", orgType)) +// DefaultChangeToast is the success toast of a default change that committed, +// naming the organization type by its display name. +func (r *OrgTypeChangeResult) DefaultChangeToast(displayName string) string { + return r.toast(fmt.Sprintf("Default change committed for %s", displayName)) } // toast is head followed by the result's summary. A result whose counts could @@ -613,7 +614,11 @@ func (h *OperatorPartialsHandler) CommitOrgTypeDefaultChange(w http.ResponseWrit ot = fresh } result := planActToastResult(changed.PlanActShare) - fireSuccessToast(w, result.DefaultChangeToast(orgType)) + name := ot.DisplayName + if name == "" { + name = ot.OrgType + } + fireSuccessToast(w, result.DefaultChangeToast(name)) h.renderOrgTypeCard(w, r, ot, "", nil, "") if !changed.Pass.Done { h.startPlanActDrain(r.Context(), changed.ActID) diff --git a/internal/server/plan_acts_concurrency_db_test.go b/internal/server/plan_acts_concurrency_db_test.go index 3b3b7c32..833ee858 100644 --- a/internal/server/plan_acts_concurrency_db_test.go +++ b/internal/server/plan_acts_concurrency_db_test.go @@ -312,7 +312,7 @@ func TestDefaultChangeTwiceRefusesTheSecond(t *testing.T) { refused++ } } - if want := []string{"Default change committed for : 1 grandfathered."}; !slices.Equal(toasts, want) { + if want := []string{"Default change committed for T: 1 grandfathered."}; !slices.Equal(toasts, want) { t.Errorf("toasts = %q, want %q", toasts, want) } if refused != 1 { diff --git a/internal/server/testdata/plan_acts/default-already-at.json b/internal/server/testdata/plan_acts/default-already-at.json index f6f4f4ab..2f868b33 100644 --- a/internal/server/testdata/plan_acts/default-already-at.json +++ b/internal/server/testdata/plan_acts/default-already-at.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 already at the default." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 already at the default." ], "checked": [], "logs": [], diff --git a/internal/server/testdata/plan_acts/default-grandfather.json b/internal/server/testdata/plan_acts/default-grandfather.json index a47cabc0..6e583923 100644 --- a/internal/server/testdata/plan_acts/default-grandfather.json +++ b/internal/server/testdata/plan_acts/default-grandfather.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 initiated, 1 grandfathered, 1 untouched, 1 without a default pool." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 initiated, 1 grandfathered, 1 untouched, 1 without a default pool." ], "checked": [], "logs": [ diff --git a/internal/server/testdata/plan_acts/default-initiate-fails.json b/internal/server/testdata/plan_acts/default-initiate-fails.json index 4d98ef5c..4527fb4e 100644 --- a/internal/server/testdata/plan_acts/default-initiate-fails.json +++ b/internal/server/testdata/plan_acts/default-initiate-fails.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 not yet reached.", + "Hx-Trigger showSuccessToast: Default change committed for T: 1 not yet reached.", "[id^=\"plan-act-\"]: 1 organization not yet reached." ], "checked": [], diff --git a/internal/server/testdata/plan_acts/default-listing-fails.json b/internal/server/testdata/plan_acts/default-listing-fails.json index 36b04640..6ab261cf 100644 --- a/internal/server/testdata/plan_acts/default-listing-fails.json +++ b/internal/server/testdata/plan_acts/default-listing-fails.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 not yet reached.", + "Hx-Trigger showSuccessToast: Default change committed for T: 1 not yet reached.", "[id^=\"plan-act-\"]: 1 organization not yet reached." ], "checked": [], diff --git a/internal/server/testdata/plan_acts/default-migrate-restore-fails.json b/internal/server/testdata/plan_acts/default-migrate-restore-fails.json index ba7c401b..3837908c 100644 --- a/internal/server/testdata/plan_acts/default-migrate-restore-fails.json +++ b/internal/server/testdata/plan_acts/default-migrate-restore-fails.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 not yet reached.", + "Hx-Trigger showSuccessToast: Default change committed for T: 1 not yet reached.", "[id^=\"plan-act-\"]: 1 organization not yet reached." ], "checked": [], diff --git a/internal/server/testdata/plan_acts/default-migrate.json b/internal/server/testdata/plan_acts/default-migrate.json index e8f34a08..24ac7b22 100644 --- a/internal/server/testdata/plan_acts/default-migrate.json +++ b/internal/server/testdata/plan_acts/default-migrate.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 migrated." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 migrated." ], "checked": [], "logs": [], diff --git a/internal/server/testdata/plan_acts/default-none-migrate.json b/internal/server/testdata/plan_acts/default-none-migrate.json index f5f8305c..35168a92 100644 --- a/internal/server/testdata/plan_acts/default-none-migrate.json +++ b/internal/server/testdata/plan_acts/default-none-migrate.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 migrated, 1 left plan-less." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 migrated, 1 left plan-less." ], "checked": [], "logs": [], diff --git a/internal/server/testdata/plan_acts/default-request-cap.json b/internal/server/testdata/plan_acts/default-request-cap.json index a68d8c50..548f1b11 100644 --- a/internal/server/testdata/plan_acts/default-request-cap.json +++ b/internal/server/testdata/plan_acts/default-request-cap.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 migrated, 2 not yet reached.", + "Hx-Trigger showSuccessToast: Default change committed for T: 1 migrated, 2 not yet reached.", "[id^=\"plan-act-\"]: 2 organizations not yet reached." ], "checked": [], diff --git a/internal/server/testdata/plan_acts/default-superseded.json b/internal/server/testdata/plan_acts/default-superseded.json index e30dc0c9..8662fa05 100644 --- a/internal/server/testdata/plan_acts/default-superseded.json +++ b/internal/server/testdata/plan_acts/default-superseded.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 2 migrated." + "Hx-Trigger showSuccessToast: Default change committed for T: 2 migrated." ], "checked": [], "logs": [ diff --git a/internal/server/testdata/plan_acts/default-untouched-outgoing.json b/internal/server/testdata/plan_acts/default-untouched-outgoing.json index 3c26843b..c03bcfb5 100644 --- a/internal/server/testdata/plan_acts/default-untouched-outgoing.json +++ b/internal/server/testdata/plan_acts/default-untouched-outgoing.json @@ -1,7 +1,7 @@ { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 untouched." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 untouched." ], "checked": [], "logs": [ diff --git a/internal/server/testdata/plan_acts/removal-against-default/the-default-change-queues-first.json b/internal/server/testdata/plan_acts/removal-against-default/the-default-change-queues-first.json index b4ca5ee5..eb77d6a2 100644 --- a/internal/server/testdata/plan_acts/removal-against-default/the-default-change-queues-first.json +++ b/internal/server/testdata/plan_acts/removal-against-default/the-default-change-queues-first.json @@ -2,7 +2,7 @@ "first": { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 already at the default." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 already at the default." ], "checked": [], "logs": [] diff --git a/internal/server/testdata/plan_acts/removal-against-default/the-default-change-runs-first.json b/internal/server/testdata/plan_acts/removal-against-default/the-default-change-runs-first.json index 207fcb3a..9a2f3010 100644 --- a/internal/server/testdata/plan_acts/removal-against-default/the-default-change-runs-first.json +++ b/internal/server/testdata/plan_acts/removal-against-default/the-default-change-runs-first.json @@ -2,7 +2,7 @@ "first": { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 grandfathered." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 grandfathered." ], "checked": [], "logs": [] diff --git a/internal/server/testdata/plan_acts/removal-against-default/the-removal-queues-first.json b/internal/server/testdata/plan_acts/removal-against-default/the-removal-queues-first.json index a2a897df..25e6d188 100644 --- a/internal/server/testdata/plan_acts/removal-against-default/the-removal-queues-first.json +++ b/internal/server/testdata/plan_acts/removal-against-default/the-removal-queues-first.json @@ -10,7 +10,7 @@ "second": { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 grandfathered." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 grandfathered." ], "checked": [], "logs": [] diff --git a/internal/server/testdata/plan_acts/removal-against-default/the-removal-runs-first.json b/internal/server/testdata/plan_acts/removal-against-default/the-removal-runs-first.json index a2a897df..25e6d188 100644 --- a/internal/server/testdata/plan_acts/removal-against-default/the-removal-runs-first.json +++ b/internal/server/testdata/plan_acts/removal-against-default/the-removal-runs-first.json @@ -10,7 +10,7 @@ "second": { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 grandfathered." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 grandfathered." ], "checked": [], "logs": [] diff --git a/internal/server/testdata/plan_acts/tier-change-during-conferral/a-reorder.json b/internal/server/testdata/plan_acts/tier-change-during-conferral/a-reorder.json index d7bdf95c..5444c00e 100644 --- a/internal/server/testdata/plan_acts/tier-change-during-conferral/a-reorder.json +++ b/internal/server/testdata/plan_acts/tier-change-during-conferral/a-reorder.json @@ -2,7 +2,7 @@ "first": { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 grandfathered." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 grandfathered." ], "checked": [], "logs": [] diff --git a/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-add.json b/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-add.json index 29f50f57..b5e3a64b 100644 --- a/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-add.json +++ b/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-add.json @@ -2,7 +2,7 @@ "first": { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 grandfathered." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 grandfathered." ], "checked": [], "logs": [] diff --git a/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-delete.json b/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-delete.json index 5cfc2762..bcae3b42 100644 --- a/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-delete.json +++ b/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-delete.json @@ -2,7 +2,7 @@ "first": { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 grandfathered." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 grandfathered." ], "checked": [], "logs": [] diff --git a/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-removal.json b/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-removal.json index 7b4cae33..9cf7ddb4 100644 --- a/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-removal.json +++ b/internal/server/testdata/plan_acts/tier-change-during-conferral/a-tier-removal.json @@ -2,7 +2,7 @@ "first": { "answer": [ "status 200", - "Hx-Trigger showSuccessToast: Default change committed for : 1 grandfathered." + "Hx-Trigger showSuccessToast: Default change committed for T: 1 grandfathered." ], "checked": [], "logs": []