laravel-shop/tests/Unit
Fabian @ Blax Software f10d5c2f04 feat(tax): configurable TaxService applied across every checkout path
Blax\Shop\Services\TaxService::rates($exempt, $rates=null) is one source of
truth that turns "which rate(s)" (config shop.tax.rates or an explicit list)
and "is this customer exempt" into the array Stripe expects. It fails loud
(TaxRateNotConfiguredException) when shop.tax.require is set and no rate is
configured for a non-exempt charge, instead of silently billing 0% VAT.

New config('shop.tax') block (SHOP_TAX_RATES / SHOP_TAX_REQUIRE). Unit tested.

Consumers (learn-atc #1509) delegate getApplicableTaxRates() here so no path
can apply the rate twice (Stripe rejects duplicate tax rates) or drop VAT to 0%.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-21 08:23:56 +02:00
..
Cart BFI cart / orders 2026-01-05 10:30:21 +01:00
Enums I loanable product type, tiered pricing, lifecycle events, host helpers 2026-05-15 10:27:59 +02:00
Models I loanable product type, tiered pricing, lifecycle events, host helpers 2026-05-15 10:27:59 +02:00
Order feat: Enhance traits with strict types and improve method signatures 2026-05-15 20:26:24 +02:00
Product BFI cart / orders 2026-01-05 10:30:21 +01:00
Purchase I loanable product type, tiered pricing, lifecycle events, host helpers 2026-05-15 10:27:59 +02:00
Resources test: pin clock in loan-vocabulary test; docs: bump suite counts to 1400/3755 2026-06-02 09:48:26 +02:00
Stripe I order notes, BF checkout currency 2026-01-25 10:40:17 +01:00
HtmlDateTimeCastTest.php BFI cart single item 2025-12-24 19:40:10 +01:00
ShopServiceTest.php BFI cart / orders 2026-01-05 10:30:21 +01:00
StockManagementTest.php BF edgecases, R structure, A tests 2026-05-18 13:05:38 +02:00
StockTypeSafetyTest.php BF edgecases, R structure, A tests 2026-05-18 13:05:38 +02:00
TaxServiceTest.php feat(tax): configurable TaxService applied across every checkout path 2026-08-21 08:23:56 +02:00