create(['name' => 'Lokalisierter Tenant']); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'readonly'); $user->forceFill(['preferred_locale' => 'de'])->save(); $snapshot = seedTenantReviewEvidence($tenant); $review = composeTenantReviewForTest($tenant, $user, $snapshot); $review->forceFill([ 'status' => TenantReviewStatus::Published->value, 'published_at' => now(), 'published_by_user_id' => (int) $user->getKey(), ])->save(); App::setLocale('de'); $this->actingAs($user); setAdminPanelContext(); session()->put(WorkspaceContext::SESSION_KEY, (int) $tenant->workspace_id); Livewire::actingAs($user) ->test(CustomerReviewWorkspace::class) ->assertCanSeeTableRecords([$tenant->fresh()]) ->assertSee('Kundensicherer Governance-Paket-Index') ->assertSee('Prüfen Sie für jeden berechtigten Tenant den executive-fähigen Status des Governance-Pakets und öffnen Sie bei Bedarf die kundensichere Detailansicht.') ->assertSee('Jede Zeile ist ein Einstieg in die Detailansicht: Dort sehen Sie Paketstatus, Executive-Einstieg, Nachweise, aktuelle Risiken und den nächsten kundensicheren Schritt.') ->assertSee('Dieser Workspace fasst die aktuelle Review- und Nachweislage für die Service-Auslieferung zusammen. Er ersetzt weder ein formales Auditurteil noch eine Zertifizierung oder rechtliche Attestierung.') ->assertSee('Governance-Paket') ->assertSee('Nachweise') ->assertSee('Nächster Schritt') ->assertSee('Review öffnen') ->assertDontSee('Customer-safe governance package index'); }); it('renders the customer review detail surface in german for the effective locale', function (): void { Storage::fake('exports'); $tenant = Tenant::factory()->create(['name' => 'Lokalisierter Detail-Tenant']); [$user, $tenant] = createUserWithTenant(tenant: $tenant, role: 'owner'); $user->forceFill(['preferred_locale' => 'de'])->save(); $snapshot = seedTenantReviewEvidence($tenant); $review = composeTenantReviewForTest($tenant, $user, $snapshot); $review->forceFill([ 'status' => TenantReviewStatus::Published->value, 'published_at' => now(), 'published_by_user_id' => (int) $user->getKey(), ])->save(); Storage::disk('exports')->put('review-packs/customer-review-localization-test.zip', 'PK-test'); $pack = ReviewPack::factory()->ready()->create([ 'tenant_id' => (int) $tenant->getKey(), 'workspace_id' => (int) $tenant->workspace_id, 'tenant_review_id' => (int) $review->getKey(), 'evidence_snapshot_id' => (int) $snapshot->getKey(), 'initiated_by_user_id' => (int) $user->getKey(), 'file_path' => 'review-packs/customer-review-localization-test.zip', 'file_disk' => 'exports', ]); $review->forceFill(['current_export_review_pack_id' => (int) $pack->getKey()])->save(); App::setLocale('de'); setTenantPanelContext($tenant); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $tenant->workspace_id]) ->get(TenantReviewResource::tenantScopedUrl('view', ['record' => $review], $tenant).'?'.http_build_query([ CustomerReviewWorkspace::DETAIL_CONTEXT_QUERY_KEY => 1, ])) ->assertOk() ->assertSee('Veröffentlichter Governance-Nachweis') ->assertSee('Primäre Aktion') ->assertSee('Executive-Einstieg') ->assertSee('Strukturierter Auditor-Anhang') ->assertDontSee('Released governance record'); $component = localizedTenantReviewComponent($user, $review->getKey()); $component->assertActionExists( 'download_current_review_pack', fn (\Filament\Actions\Action $action): bool => $action->getLabel() === 'Governance-Paket herunterladen', ); }); function localizedTenantReviewComponent($user, int $reviewId): Testable { return Livewire::withQueryParams([CustomerReviewWorkspace::DETAIL_CONTEXT_QUERY_KEY => 1]) ->actingAs($user) ->test(ViewTenantReview::class, ['record' => $reviewId]); }