create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(TenantReviewPackCard::class, ['record' => $tenant]) ->assertSee('No review pack generated yet') ->assertSee('Generate'); }); // ─── Ready State ───────────────────────────────────────────── it('shows download and generate buttons when a ready pack exists', function (): void { $tenant = Tenant::factory()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); $filePath = 'review-packs/widget-test.zip'; Storage::disk('exports')->put($filePath, 'PK-test'); ReviewPack::factory()->ready()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'initiated_by_user_id' => (int) $user->getKey(), 'file_path' => $filePath, 'file_disk' => 'exports', ]); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(TenantReviewPackCard::class, ['record' => $tenant]) ->assertSee('Download') ->assertSee('Generate new'); }); // ─── Generating State ──────────────────────────────────────── it('shows in-progress message for a generating pack', function (): void { $tenant = Tenant::factory()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); ReviewPack::factory()->generating()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'initiated_by_user_id' => (int) $user->getKey(), ]); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(TenantReviewPackCard::class, ['record' => $tenant]) ->assertSee('Generation in progress'); }); // ─── Queued State ──────────────────────────────────────────── it('shows in-progress message for a queued pack', function (): void { $tenant = Tenant::factory()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); ReviewPack::factory()->queued()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'initiated_by_user_id' => (int) $user->getKey(), ]); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(TenantReviewPackCard::class, ['record' => $tenant]) ->assertSee('Generation in progress'); }); // ─── Failed State ──────────────────────────────────────────── it('shows retry button for a failed pack', function (): void { $tenant = Tenant::factory()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); ReviewPack::factory()->failed()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'initiated_by_user_id' => (int) $user->getKey(), ]); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(TenantReviewPackCard::class, ['record' => $tenant]) ->assertSee('Retry'); }); // ─── Expired State ─────────────────────────────────────────── it('shows generate action for an expired pack', function (): void { $tenant = Tenant::factory()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); ReviewPack::factory()->expired()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'initiated_by_user_id' => (int) $user->getKey(), ]); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(TenantReviewPackCard::class, ['record' => $tenant]) ->assertSee('Generate new'); }); // ─── Generate Pack Livewire Action ────────────────────────── it('can trigger generatePack Livewire action', function (): void { $tenant = Tenant::factory()->create(); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); $tenant->makeCurrent(); Filament::setTenant($tenant, true); Livewire::actingAs($user) ->test(TenantReviewPackCard::class, ['record' => $tenant]) ->call('generatePack', true, true) ->assertHasNoErrors(); expect(ReviewPack::query()->where('tenant_id', (int) $tenant->getKey())->count())->toBe(1); });