Test für den Normalfall der Statusanzeige: "Im Verkauf"
Drei der vier Zustände waren belegt, der häufigste nicht. Eine reine assertSee() wäre nicht falsifizierbar gewesen: die Spaltenüberschrift "plans.live_version" übersetzt zufällig auf denselben Satz wie die Plakette "plans.on_sale" und stünde selbst dann auf der Seite, wenn keine Zeile die Plakette zeigte — deshalb über die Häufigkeit geprüft (Überschrift kommt genau einmal vor, mehr als das beweist eine echte Zeile). Mit einer Mutation (sellable-Prüfung stumpf auf false) probeweise als rot bestätigt, dann zurückgesetzt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>feat/neue-pakete
parent
6314bb60fb
commit
b95cae1669
|
|
@ -385,6 +385,32 @@ it('lists a withdrawn plan as withdrawn, not as missing', function () {
|
|||
->assertSee(__('plans.withdrawn_badge'));
|
||||
});
|
||||
|
||||
it('shows a normal sellable plan as on sale', function () {
|
||||
// Der Normalfall — auf den meisten Zeilen der Fall — hatte bisher keinen
|
||||
// eigenen Test: die drei anderen Zustände sind unten belegt, dieser nicht.
|
||||
// Bräche $selling oder die erste Bedingung im match(true), verschwände ein
|
||||
// verkäufliches Paket unbemerkt aus der Liste, und ausgerechnet der
|
||||
// häufigste Zustand wäre der einzige ungeprüfte.
|
||||
//
|
||||
// Business hängt hier nicht zufällig im Verkauf: geprüft wird, dass es
|
||||
// weder internal noch zurückgezogen ist und tatsächlich in sellable()
|
||||
// steht — der echte Normalfall, kein Schalter extra dafür umgelegt.
|
||||
$business = PlanFamily::query()->where('key', 'business')->sole();
|
||||
expect($business->internal)->toBeFalse()
|
||||
->and($business->sales_enabled)->toBeTrue()
|
||||
->and(array_keys(app(PlanCatalogue::class)->sellable()))->toContain('business');
|
||||
|
||||
$html = Livewire::actingAs(owner(), 'operator')->test(Plans::class)->html();
|
||||
|
||||
// assertSee(__('plans.on_sale')) allein bewiese nichts: die Spaltenüber-
|
||||
// schrift ("plans.live_version") übersetzt zufällig auf denselben Satz
|
||||
// "Im Verkauf" und stünde selbst dann auf der Seite, wenn keine einzige
|
||||
// Zeile die Plakette zeigte. Die Überschrift kommt genau einmal vor —
|
||||
// mehr als das beweist, dass mindestens eine Zeile die Plakette selbst
|
||||
// trägt.
|
||||
expect(substr_count($html, __('plans.on_sale')))->toBeGreaterThan(1);
|
||||
});
|
||||
|
||||
it('shows an internal plan as console-only, not as nothing available', function () {
|
||||
// Intern (`test`) ist internal=true mit einer laufenden Version — die
|
||||
// Liste fragte bisher nur "steht die Familie im Verkaufskatalog?" und
|
||||
|
|
|
|||
Loading…
Reference in New Issue