outputDisk)->delete($this->outputPath); }); afterEach(function () { /** @var \Uwil\SitemapGenerator\Tests\TestCase $this */ Storage::disk($this->outputDisk)->delete($this->outputPath); }); it('displays the dry-run table without creating the sitemap file', function () { /** @var \Uwil\SitemapGenerator\Tests\TestCase $this */ // GIVEN Route::name('contact')->get('/{locale}/contact', fn () => 'contact'); config()->set(SitemapConfig::CONFIG_KEY . '.single_pages', ['contact']); // WHEN /** @var \Illuminate\Testing\PendingCommand $command */ $command = $this->artisan('uwil:sitemap:refresh --dry-run'); // THEN $command ->expectsOutput('Generating Sitemap..') ->assertSuccessful() ->run(); expect(Storage::disk($this->outputDisk)->exists($this->outputPath))->toBeFalse(); }); it('generates the sitemap xml file and serves it via the GET route', function () { /** @var \Uwil\SitemapGenerator\Tests\TestCase $this */ // GIVEN $url = 'sitemap.xml'; Route::name('contact')->get('/{locale}/contact', fn () => 'contact'); config()->set(SitemapConfig::CONFIG_KEY . '.single_pages', ['contact']); // WHEN /** @var \Illuminate\Testing\PendingCommand $command */ $command = $this->artisan('uwil:sitemap:refresh'); // THEN $command ->expectsOutput('Generating Sitemap..') ->expectsOutput('A new sitemap.xml was generated') ->assertSuccessful() ->run(); expect(Storage::disk($this->outputDisk)->exists($this->outputPath))->toBeTrue(); $content = Storage::disk($this->outputDisk)->get($this->outputPath); expect($content) ->toContain('toContain('/fr/contact') ->toContain('/en/contact'); $response = $this->get($url); $response->assertOk(); expect($response->streamedContent()) ->toContain('/fr/contact'); }); it('returns 404 when the sitemap has not been generated yet', function () { /** @var \Uwil\SitemapGenerator\Tests\TestCase $this */ // GIVEN $url = 'sitemap.xml'; // WHEN $result = $this->get($url); // THEN $result->assertNotFound(); }); it('dispatches the job to queue when using --queue option', function () { /** @var \Uwil\SitemapGenerator\Tests\TestCase $this */ // GIVEN Queue::fake(); // WHEN /** @var \Illuminate\Testing\PendingCommand $command */ $command = $this->artisan('uwil:sitemap:refresh --queue'); // THEN $command ->expectsOutput('Generating Sitemap..') ->expectsOutput('Sitemap generation job dispatched to queue.') ->assertSuccessful() ->run(); Queue::assertPushed(GenerateSitemapJob::class); }); it('schedules GenerateSitemapJob with configured cron expression', function () { // GIVEN $schedule = resolve(Schedule::class); // WHEN $schedule->job(new GenerateSitemapJob())->cron('15 4 * * *'); $events = collect($schedule->events()); // THEN $event = $events->first(fn ($e) => str_contains($e->description ?? '', 'GenerateSitemapJob')); Assert::isInstanceOf($event, Event::class); expect($event)->not->toBeNull() ->and($event->expression)->toBe('15 4 * * *'); }); });