*/ class TenantReviewFactory extends Factory { protected $model = TenantReview::class; /** * @return array */ public function definition(): array { return [ 'tenant_id' => Tenant::factory()->for(Workspace::factory()), 'workspace_id' => function (array $attributes): int { $tenantId = $attributes['tenant_id'] ?? null; if (! is_numeric($tenantId)) { return (int) Workspace::factory()->create()->getKey(); } $tenant = Tenant::query()->whereKey((int) $tenantId)->first(); if (! $tenant instanceof Tenant || $tenant->workspace_id === null) { return (int) Workspace::factory()->create()->getKey(); } return (int) $tenant->workspace_id; }, 'evidence_snapshot_id' => null, 'current_export_review_pack_id' => null, 'operation_run_id' => null, 'initiated_by_user_id' => User::factory(), 'published_by_user_id' => null, 'superseded_by_review_id' => null, 'fingerprint' => fake()->sha256(), 'status' => TenantReviewStatus::Draft->value, 'completeness_state' => TenantReviewCompletenessState::Complete->value, 'summary' => [ 'publish_blockers' => [], 'required_section_count' => 6, 'completed_section_count' => 6, ], 'generated_at' => now(), 'published_at' => null, 'archived_at' => null, ]; } public function ready(): static { return $this->state(fn (): array => [ 'status' => TenantReviewStatus::Ready->value, 'completeness_state' => TenantReviewCompletenessState::Complete->value, 'summary' => [ 'publish_blockers' => [], 'required_section_count' => 6, 'completed_section_count' => 6, ], ]); } public function published(?ReviewPack $reviewPack = null): static { return $this->state(fn (): array => [ 'current_export_review_pack_id' => $reviewPack?->getKey(), 'status' => TenantReviewStatus::Published->value, 'published_at' => now(), ]); } }