Plan: zwei Tests, die nichts bewiesen haben
Der eine rechnete mit festen Zahlen und pruefte damit, ob PHP dividieren kann; er liest jetzt Katalog und Konfiguration und schlaegt an, wenn ein Preis so gesetzt wird, dass Stapeln sich wieder lohnt. Der andere legte einen Vertrag an und pruefte die Werte, die er gerade selbst geschrieben hatte; er geht jetzt ueber den Weg, ueber den eine Bereitstellung das Kontingent holt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>feat/hostnamen-vergabe
parent
1e570f17fc
commit
0ac76fb05b
|
|
@ -927,12 +927,21 @@ it('verkauft 20 GB für 15 Euro netto', function () {
|
|||
});
|
||||
|
||||
it('bleibt teurer je Gigabyte als der Aufstieg', function () {
|
||||
$blockPerGb = 1500 / 20; // 75 ct
|
||||
$startZuTeam = (7900 - 3900) / (85 - 30); // ~72,7 ct
|
||||
$teamZuBusiness = (13900 - 7900) / (175 - 85); // ~66,7 ct
|
||||
// Gerechnet wird mit dem, was Katalog und Konfiguration WIRKLICH sagen —
|
||||
// mit festen Zahlen prüfte dieser Test nur, ob PHP dividieren kann. So
|
||||
// schlägt er an, wenn ein Preis später einmal so gesetzt wird, dass
|
||||
// Stapeln sich wieder lohnt.
|
||||
$catalogue = app(AddonCatalogue::class);
|
||||
$plans = app(App\Services\Billing\PlanCatalogue::class)->sellable();
|
||||
|
||||
expect($blockPerGb)->toBeGreaterThan($startZuTeam)
|
||||
->and($blockPerGb)->toBeGreaterThan($teamZuBusiness);
|
||||
$blockPerGb = $catalogue->priceCents(AddonCatalogue::STORAGE) / $catalogue->packGb();
|
||||
|
||||
foreach ([['start', 'team'], ['team', 'business']] as [$von, $nach]) {
|
||||
$mehrGb = $plans[$nach]['quota_gb'] - $plans[$von]['quota_gb'];
|
||||
$mehrCent = $plans[$nach]['price_cents'] - $plans[$von]['price_cents'];
|
||||
|
||||
expect($blockPerGb)->toBeGreaterThan($mehrCent / $mehrGb);
|
||||
}
|
||||
});
|
||||
|
||||
it('bietet Enterprise keinen Zusatzspeicher an', function () {
|
||||
|
|
@ -1566,14 +1575,22 @@ it('nimmt das interne Paket und Enterprise aus dem Laden', function () {
|
|||
->and(PlanFamily::query()->where('key', 'enterprise')->value('sales_enabled'))->toBeFalsy();
|
||||
});
|
||||
|
||||
it('lässt einen laufenden Vertrag unberührt', function () {
|
||||
// Ein Vertrag, der vor der Umschaltung auf altem Team geschlossen wurde,
|
||||
// trägt seine eigenen Zahlen und liest den Katalog nicht mehr.
|
||||
it('lässt einen laufenden Vertrag auf seinen eigenen Zahlen', function () {
|
||||
// Ein Vertrag, wie ihn OpenSubscription vor der Umschaltung geschrieben
|
||||
// hat, mit der Maschine dazu.
|
||||
$subscription = Subscription::factory()->create([
|
||||
'plan' => 'team', 'quota_gb' => 500, 'disk_gb' => 540, 'price_cents' => 17900,
|
||||
]);
|
||||
$instance = App\Models\Instance::factory()->create([
|
||||
'customer_id' => $subscription->customer_id, 'status' => 'active',
|
||||
'quota_gb' => 500, 'disk_gb' => 540,
|
||||
]);
|
||||
|
||||
expect($subscription->fresh()->quota_gb)->toBe(500)
|
||||
// Der Katalog sagt heute etwas anderes — und keine Leseseite schreibt es
|
||||
// dem Vertrag um. Die mittlere Zusicherung ist die eigentliche: sie geht
|
||||
// durch denselben Weg, über den eine Bereitstellung das Kontingent holt.
|
||||
expect(app(PlanCatalogue::class)->sellable()['team']['quota_gb'])->toBe(85)
|
||||
->and(App\Services\Billing\StorageAllowance::for($instance)->planGb)->toBe(500)
|
||||
->and($subscription->fresh()->price_cents)->toBe(17900);
|
||||
});
|
||||
```
|
||||
|
|
|
|||
Loading…
Reference in New Issue