*/ class TenantFactory extends Factory { public function configure(): static { return $this->afterCreating(function (Tenant $tenant): void { if ($tenant->workspace_id !== null) { return; } $workspace = Workspace::factory()->create(); $tenant->forceFill([ 'workspace_id' => (int) $workspace->getKey(), ])->save(); }); } /** * Define the model's default state. * * @return array */ public function definition(): array { return [ 'name' => fake()->company(), 'external_id' => fake()->uuid(), 'tenant_id' => fake()->uuid(), 'app_client_id' => fake()->uuid(), 'app_client_secret' => null, // Skip encryption in tests 'app_certificate_thumbprint' => null, 'app_status' => 'ok', 'app_notes' => null, 'status' => 'active', 'environment' => 'other', 'is_current' => false, 'metadata' => [], 'rbac_status' => 'ok', 'rbac_last_checked_at' => now(), ]; } public function draft(): static { return $this->state(fn (): array => [ 'status' => Tenant::STATUS_DRAFT, 'is_current' => false, ]); } public function onboarding(): static { return $this->state(fn (): array => [ 'status' => Tenant::STATUS_ONBOARDING, 'is_current' => false, ]); } public function active(): static { return $this->state(fn (): array => [ 'status' => Tenant::STATUS_ACTIVE, 'deleted_at' => null, ]); } public function archived(): static { return $this->state(fn (): array => [ 'status' => Tenant::STATUS_ARCHIVED, 'deleted_at' => now(), 'is_current' => false, ]); } }