Buchungs-Seite: Feinschliff nach Review

- Aktueller-Tarif-Card erscheint erst mit vorhandener Buchung; die
  Kontingent-Kachel zeigt nur noch echte Zahlen (kein irreführendes
  "Unbegrenzt" vor dem Launch-Schalter)
- Tarif-Cards plakativer: Icon je Tarif, größerer Preis, Trennlinie vor
  den Leistungen, mehr Abstand zum größeren Buchen-Button
- "Prüfung und Veröffentlichung inklusive" statt "KI-Prüfung"
- "Aktive Buchungen"-Panel entfernt (redundant zum Tarif-Panel);
  Verlauf als eigene, durch Trennlinie abgegrenzte Sektion
- Tests angepasst; Suite 519 passed / 4 skipped

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-06-12 13:30:06 +00:00
parent 23ac8bc7f1
commit 6a82e2a2a8
4 changed files with 92 additions and 131 deletions

View file

@ -41,7 +41,7 @@ test('the bookings page renders the active plans with checkout links', function
->assertSee('Business')
->assertSee('49 €')
->assertSee('490 €')
->assertSee('10 Pressemitteilungen pro Monat')
->assertSee('Pressemitteilungen pro Monat')
->assertSee('max. 2 Veröffentlichungen pro Tag')
->assertSee('2 Monate gratis')
->assertSee(route('me.checkout.subscription', ['planSlug' => 'business', 'interval' => 'monthly']), false)
@ -61,13 +61,14 @@ test('the single pm block links to its checkout', function () {
->assertSee(route('me.checkout.single-pm'), false);
});
test('without any booking the page shows the empty state', function () {
test('without any booking the current tariff card is hidden', function () {
/** @var TestCase $this */
$this->actingAs(bookingsTestCustomer());
LivewireVolt::test('customer.bookings')
->assertSee('Noch kein aktiver Tarif')
->assertSee('Noch keine aktiven Buchungen');
->assertDontSee('Aktueller Tarif')
->assertSee('Den passenden Tarif wählen')
->assertSee('Noch kein Buchungsverlauf');
});
test('a subscriber sees the current plan and the manage button', function () {
@ -85,7 +86,7 @@ test('a subscriber sees the current plan and the manage button', function () {
LivewireVolt::test('customer.bookings')
->assertSee('Ihr aktueller Tarif')
->assertSee('Abo verwalten')
->assertSee('Abo: Pro')
->assertSee('Pressemitteilungen pro Monat')
->assertSee(route('me.checkout.billing-portal'), false);
});
@ -104,11 +105,10 @@ test('a grandfathered legacy user sees the bestandstarif with unlimited quota',
LivewireVolt::test('customer.bookings')
->assertSee('Bestandstarif')
->assertSee('Presseverteiler Premium')
->assertSee('Unbegrenzte Pressemitteilungen (Bestandsschutz).')
->assertSee('Unbegrenzt');
->assertSee('Unbegrenzte Pressemitteilungen (Bestandsschutz).');
});
test('open and consumed single purchases appear in bookings and history', function () {
test('open and consumed single purchases appear in the card and history', function () {
/** @var TestCase $this */
$user = bookingsTestCustomer();
SinglePurchase::factory()->paid()->create(['user_id' => $user->id]);
@ -117,7 +117,7 @@ test('open and consumed single purchases appear in bookings and history', functi
$this->actingAs($user);
LivewireVolt::test('customer.bookings')
->assertSee('einlösbar')
->assertSee('Einzel-Pressemitteilung verfügbar')
->assertSee('eingelöst am');
});

View file

@ -80,7 +80,7 @@ test('customer bookings page shows the tariff grid and single pm block', functio
->assertSee('29 €')
->assertSee('2 Monate gratis')
->assertSee('Einzel-Pressemitteilung — ohne Abo')
->assertSee('Noch keine aktiven Buchungen');
->assertSee('Noch kein Buchungsverlauf');
});
test('admin can access both panel dashboards', function () {