InstanceSettings::firstOrCreate(['id' => 0])); Queue::fake(); $team = Team::factory()->create(); $server = Server::factory()->create(['team_id' => $team->id]); $destination = StandaloneDocker::where('server_id', $server->id)->firstOrFail(); $project = Project::factory()->create(['team_id' => $team->id]); $environment = $project->environments()->first() ?? Environment::factory()->create(['project_id' => $project->id]); $application = Application::factory()->create([ 'environment_id' => $environment->id, 'destination_id' => $destination->id, 'destination_type' => $destination->getMorphClass(), ]); $validTask = ScheduledTask::factory()->create([ 'team_id' => $team->id, 'application_id' => $application->id, ]); $orphanedTask = ScheduledTask::factory()->create([ 'team_id' => $team->id, 'application_id' => PHP_INT_MAX, ]); $this->artisan('cleanup:stucked-resources')->assertSuccessful(); expect($validTask->fresh())->not->toBeNull() ->and($orphanedTask->fresh())->toBeNull(); }); it('deletes orphaned deployments without loading their logs', function () { InstanceSettings::unguarded(fn () => InstanceSettings::firstOrCreate(['id' => 0])); Queue::fake(); $team = Team::factory()->create(); $server = Server::factory()->create(['team_id' => $team->id]); $destination = StandaloneDocker::where('server_id', $server->id)->firstOrFail(); $project = Project::factory()->create(['team_id' => $team->id]); $environment = $project->environments()->first() ?? Environment::factory()->create(['project_id' => $project->id]); $application = Application::factory()->create([ 'environment_id' => $environment->id, 'destination_id' => $destination->id, 'destination_type' => $destination->getMorphClass(), ]); $validDeployment = ApplicationDeploymentQueue::create([ 'application_id' => $application->id, 'deployment_uuid' => 'valid-deployment', 'server_id' => $server->id, 'logs' => str_repeat('x', 1000), ]); $orphanedDeployment = ApplicationDeploymentQueue::create([ 'application_id' => PHP_INT_MAX, 'deployment_uuid' => 'orphaned-deployment', 'server_id' => $server->id, 'logs' => str_repeat('x', 1000), ]); DB::enableQueryLog(); $this->artisan('cleanup:stucked-resources')->assertSuccessful(); $deploymentSelects = collect(DB::getQueryLog()) ->pluck('query') ->filter(fn (string $query) => str_starts_with($query, 'select') && str_contains($query, 'from "application_deployment_queues"')); expect($validDeployment->fresh())->not->toBeNull() ->and($orphanedDeployment->fresh())->toBeNull() ->and($deploymentSelects)->not->toBeEmpty() ->and($deploymentSelects->filter(fn (string $query) => str_contains($query, '*')))->toBeEmpty(); });