Files
fuel-alert/tests/Feature/Admin/WaitlistSubscriberResourceTest.php
Ovidiu U 61adc133aa Add pricing-page waitlist (name + email signup)
Replaces the disabled "Coming soon" buttons on the pricing page with a
waitlist band so visitors can be notified when alerts launch — separate
from registered users.

- waitlist_subscribers table (name, email unique, source, referrer)
- WaitlistService::subscribe — normalises email, idempotent
- Public POST /api/waitlist (throttle:10,1), thin controller + form request
- Read-only Filament resource with streamed CSV export
- Vue: useWaitlist composable + WaitlistForm, rendered below the grid
  while any tier is still "coming soon"; sends source + document.referrer

Announcement send mechanism deferred to a later task.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 10:27:25 +01:00

32 lines
934 B
PHP

<?php
use App\Filament\Resources\WaitlistSubscriberResource\Pages\ListWaitlistSubscribers;
use App\Models\User;
use App\Models\WaitlistSubscriber;
use Livewire\Livewire;
beforeEach(function () {
$this->actingAs(User::factory()->admin()->create());
});
it('lists waitlist subscribers', function () {
$subscribers = WaitlistSubscriber::factory()->count(3)->create();
Livewire::test(ListWaitlistSubscribers::class)
->assertOk()
->assertCanSeeTableRecords($subscribers);
});
it('exposes a CSV export header action', function () {
Livewire::test(ListWaitlistSubscribers::class)
->assertActionExists('export');
});
it('exports a CSV download when the action runs against real subscribers', function () {
WaitlistSubscriber::factory()->count(2)->create();
Livewire::test(ListWaitlistSubscribers::class)
->callAction('export')
->assertFileDownloaded('waitlist.csv');
});