CluPilotCloud/tests/Feature/Billing
nexxo 447d6fe0f3 Merge main into the host-takeover branch
One real conflict, in SyncStripeCatalogue::handle(), and both sides were right.

Main's parallel work resolves the adoption singletons and takes "before" counts
so a run can tell created from adopted. The operating-mode work refuses a
catalogue whose stored objects belong to the other mode, and records which mode
the catalogue now belongs to.

Kept both, with the mode guard first. It REFUSES, so it must not run behind
anything that has already built state; the counters only need to be in place
before the create loop, and they still are. Reversing that order would have the
command resolve singletons and take counts on a catalogue it is about to reject.

2017 tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 21:21:45 +02:00
..
AddonCancellationTest.php Ask whether they are a consumer, and let one change their mind 2026-07-29 21:06:06 +02:00
AddonEntitlementTest.php Refuse the sale instead of reaching Stripe without a key 2026-07-30 11:58:01 +02:00
ApplyPlanChangeTest.php Book a downgrade for a date that cannot move, and sell a module once 2026-07-29 17:51:37 +02:00
ArchivePullAccessTest.php Mint the archive collection key from the console instead of by hand 2026-07-29 10:08:32 +02:00
CustomDomainAccessTest.php Refuse the sale instead of reaching Stripe without a key 2026-07-30 11:58:01 +02:00
CustomerTypeTest.php Ask whether they are a consumer, and let one change their mind 2026-07-29 21:06:06 +02:00
ExportTargetFormTest.php Keep the SFTP credential on the row it belongs to, encrypted 2026-07-29 02:46:06 +02:00
FinanceSettingsTest.php Decide the VAT rate in one place, before the two disagree 2026-07-29 02:03:29 +02:00
GrantAddonTest.php Let a subscription or add-on be opened for free, with who and why on the row 2026-07-29 12:41:06 +02:00
GrantInvoiceTest.php Skip the invoice for a full gift, keep it out of revenue, hide its price 2026-07-29 12:41:32 +02:00
GrantSubscriptionTest.php Let a subscription or add-on be opened for free, with who and why on the row 2026-07-29 12:41:06 +02:00
InvoiceArchiveTest.php Leave the archive readable by whoever collects from it 2026-07-29 03:48:03 +02:00
InvoiceListTest.php List issued invoices in the console, with no way to change one 2026-07-29 02:21:15 +02:00
InvoiceMailTest.php Send the invoice with the invoice attached 2026-07-29 02:13:41 +02:00
InvoiceMathTest.php Print every line at full price and take the discount off once, in euros 2026-07-29 01:59:56 +02:00
InvoiceNumberTest.php Lay the foundation for self-issued invoices: series, numbers, frozen documents 2026-07-29 00:57:06 +02:00
IssueInvoiceTest.php Issue an invoice from what somebody bought, and freeze it there 2026-07-29 02:09:05 +02:00
PackageCancellationTest.php Take the address by field, fix the customer type, ask why they leave 2026-07-30 16:41:32 +02:00
PaidOrderFulfilmentTest.php Refuse the sale instead of reaching Stripe without a key 2026-07-30 11:58:01 +02:00
PendingPlanChangeTest.php Refuse the sale instead of reaching Stripe without a key 2026-07-30 11:58:01 +02:00
PlanCatalogueTest.php Paketversionen: Verkauf wieder aufnehmen und saubere Übergabe 2026-07-29 14:58:11 +02:00
PlanChangeTest.php Fix nine defects in the provisioning pipelines 2026-07-30 01:34:55 +02:00
PortalInvoicesTest.php Say the same thing to the customer, the register and the bank 2026-07-30 01:30:24 +02:00
ProofRegisterTest.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
RenewalInvoiceTest.php Bill a booked module every month, and put it on the invoice 2026-07-29 20:22:02 +02:00
ReverseChargePriceTest.php Accept terms instead of a start date, and fix the sender no server accepts 2026-07-30 15:22:35 +02:00
SetupFeeTest.php Accept terms instead of a start date, and fix the sender no server accepts 2026-07-30 15:22:35 +02:00
StorageAllowanceTest.php Refuse the sale instead of reaching Stripe without a key 2026-07-30 11:58:01 +02:00
StripeAddonBillingTest.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
StripeBillingTest.php Stop charging VAT to the customers who owe us none 2026-07-30 02:15:41 +02:00
StripeCatalogueModeTest.php Never tell anyone to delete a catalogue their contracts bill on 2026-07-30 17:30:56 +02:00
StripeIdempotencyKeyTest.php Merge main into the host-takeover branch 2026-07-30 21:21:45 +02:00
StripePlanChangeTest.php Invoice every renewal, and tell Stripe when the package changes 2026-07-29 19:35:15 +02:00
StripePriceAdoptionTest.php Say what the sweep did not check, before telling anyone to archive 2026-07-30 19:12:57 +02:00
StripeProductAdoptionTest.php Subtract only what was counted, not everything a singleton adopted 2026-07-30 18:20:27 +02:00
SweepOrphanPricesTest.php Name the recurring filter, and stop the spec contradicting itself 2026-07-30 19:24:18 +02:00
VatIdVerificationTest.php Ask the EU register whether a VAT number is real 2026-07-29 22:42:29 +02:00
WithdrawalTest.php Rebuild the customer's settings page as four tabs 2026-07-30 16:25:10 +02:00
YearlyTermTest.php Fix the checkout link, and stop the switch moving under the cursor 2026-07-30 16:05:56 +02:00