<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;

use App\Models\Page;
use App\Models\TextBlock;
use App\Models\User;

class SitemapTest extends TestCase
{
    public function test_a_sitemap_can_be_created()
    {
        $page = Page::factory()->create();
        $text_block = $this->createContentElement(TextBlock::factory(), $page);
        $page->publish();

        $hide_page = Page::factory()->create();
        $version = $hide_page->versions()->first();
        $version->search_exclude = true;
        $version->save();
        $text_block = $this->createContentElement(TextBlock::factory(), $hide_page);
        $hide_page->publish();

        $redirect_page = Page::factory()->create();
        $version = $redirect_page->versions()->first();
        $version->redirect = 'foobar';
        $version->save();
        $text_block = $this->createContentElement(TextBlock::factory(), $redirect_page);
        $redirect_page->publish();

        $permissions_page = Page::factory()->create();
        $permissions_page->createPermission('view', User::factory()->create());
        $text_block = $this->createContentElement(TextBlock::factory(), $permissions_page);
        $permissions_page->publish();
        $permissions_page->refresh();
        $this->assertTrue($permissions_page->hasViewPermissions());

        $no_content_page = Page::factory()->create();
        $no_content_page->publish();

        $this->get(route('sitemap'))
             ->assertSuccessful()
             ->assertSee(url($page->full_slug))
             ->assertDontSee(url($hide_page->full_slug))
             ->assertDontSee(url($permissions_page->full_slug))
             ->assertDontSee(url($no_content_page->full_slug))
             ->assertDontSee(url($redirect_page->full_slug));
    }
}
