get('/release')->assertOk()->assertSee('Download SonarDesk'); } public function test_latest_download_returns_published_package(): void { Storage::fake('local'); Storage::disk('local')->put('sonardesk/releases/SonarDesk.dmg', 'package'); SonarDeskRelease::create([ 'version' => '1.2.0', 'build_number' => 120, 'channel' => 'stable', 'file_path' => 'sonardesk/releases/SonarDesk.dmg', 'original_filename' => 'SonarDesk-1.2.0.dmg', 'file_size' => 7, 'sha256' => hash('sha256', 'package'), 'is_published' => true, 'published_at' => now(), ]); $this->get('/download')->assertOk()->assertDownload('SonarDesk-1.2.0.dmg'); } public function test_draft_release_is_not_downloadable(): void { $release = SonarDeskRelease::create(['version'=>'1.0.0','build_number'=>1,'channel'=>'stable','is_published'=>false]); $this->get('/downloads/'.$release->id)->assertNotFound(); } public function test_appcast_contains_published_release(): void { SonarDeskRelease::create([ 'version'=>'2.0.0','build_number'=>200,'channel'=>'stable','file_path'=>'sonardesk/releases/a.dmg', 'original_filename'=>'a.dmg','file_size'=>10,'sha256'=>str_repeat('a',64),'is_published'=>true,'published_at'=>now(), ]); $this->get('/updates/appcast.xml')->assertOk()->assertSee('SonarDesk 2.0.0')->assertSee('sparkle:version', false); } }