package billing import ( "testing" "time" ) func TestOperationalStatusReadiness(t *testing.T) { now := time.Now().UTC() recent := now.Add(-time.Minute) clean := OperationalStatus{ StripeEnabled: true, ReconciliationStatus: "clean", ReconciliationCompletedAt: &recent, } if !clean.Ready(now) { t.Fatal("clean operational state should be ready") } oldWebhook := now.Add(-6 * time.Minute) stuckWebhook := clean stuckWebhook.UnprocessedWebhooks = 1 stuckWebhook.OldestUnprocessedWebhook = &oldWebhook if stuckWebhook.Ready(now) { t.Fatal("stuck webhook should fail readiness") } freshRefund := now.Add(-time.Minute) processingRefund := clean processingRefund.RefundBacklog = 1 processingRefund.OldestRefund = &freshRefund if !processingRefund.Ready(now) { t.Fatal("fresh refund operation should remain ready during its processing window") } unmetered := clean unmetered.UnmeteredSuccesses = 1 if unmetered.Ready(now) { t.Fatal("unmetered success must fail readiness") } }