*/ class ManagedEnvironmentFactory extends Factory { protected bool $provisionsWorkspace = true; public function configure(): static { return $this->afterCreating(function (ManagedEnvironment $tenant): void { if (! $this->provisionsWorkspace || $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(), 'display_name' => null, 'slug' => fake()->unique()->slug(3), 'kind' => 'managed_environment', 'lifecycle_status' => 'active', 'is_current' => false, 'metadata' => [], ]; } public function draft(): static { return $this->state(fn (): array => [ 'lifecycle_status' => ManagedEnvironment::STATUS_DRAFT, 'is_current' => false, ]); } public function onboarding(): static { return $this->state(fn (): array => [ 'lifecycle_status' => ManagedEnvironment::STATUS_ONBOARDING, 'is_current' => false, ]); } public function active(): static { return $this->state(fn (): array => [ 'lifecycle_status' => ManagedEnvironment::STATUS_ACTIVE, 'deleted_at' => null, ]); } public function archived(): static { return $this->state(fn (): array => [ 'lifecycle_status' => ManagedEnvironment::STATUS_ARCHIVED, 'deleted_at' => now(), 'is_current' => false, ]); } public function minimal(): static { ManagedEnvironment::skipTestWorkspaceProvisioning(); $factory = clone $this; $factory->provisionsWorkspace = false; return $factory ->afterCreating(function (ManagedEnvironment $tenant): void { if ($tenant->workspace_id !== null) { $workspaceId = (int) $tenant->workspace_id; $tenant->forceFill(['workspace_id' => null])->saveQuietly(); Workspace::query()->whereKey($workspaceId)->delete(); } ManagedEnvironment::skipTestWorkspaceProvisioning(false); }); } }