approved()->for($project)->create(['revision_number' => $revisionNumber]); ProjectFile::factory()->for($revision, 'revision')->create(); $snapshot = ProjectCostSnapshot::factory()->for($project)->for($revision, 'revision')->create([ 'grand_total' => '10.0000', 'filament_total' => '10.0000', 'packaging_total' => '0.0000', 'shipping_total' => '0.0000', ]); return [$revision, $snapshot]; } public function test_admin_can_release_an_approved_revision_to_a_listing(): void { $admin = User::factory()->create(['role' => 'admin']); $project = Project::factory()->create(); [$revision, $snapshot] = $this->approvedRevisionWithCost($project); $link = ProjectListingLink::factory()->for($project)->create(['lock_version' => 0, 'live_release_id' => null]); $response = $this->actingAs($admin)->post(route('projects.listings.release', [$project, $link]), [ 'revision_id' => $revision->id, 'cost_snapshot_id' => $snapshot->id, 'lock_version' => 0, ]); $response->assertRedirect(); $link->refresh(); $this->assertNotNull($link->live_release_id); $this->assertSame(1, $link->lock_version); $this->assertDatabaseHas('project_releases', ['project_id' => $project->id, 'revision_id' => $revision->id, 'action' => 'release']); } /** * A real HTML