<?php

namespace Tests\Browser\General;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Laravel\Dusk\Browser;
use Tests\Browser\Traits\AuthTrait;
use Tests\DuskTestCase;

class PageTest extends DuskTestCase
{
    use DatabaseMigrations;
    use AuthTrait;

    public function testShouldFailValidationOnCreatePageWithMissingRequiredFields()
    {
        $this->browse(function (Browser $browser) {

            $this->loginToAdminBackend();

            $browser->visit('/admin/content/form/page')
                ->assertSee('Title')
                ->click('#backend_save_btn')

                ->assertAttribute('#title_en', "data-original-title", "The title field is required.")
                ->assertAttribute('#select-box-template-wrapper', "data-original-title", "The template field is required.")

                ->click('#lang_tab_pt')
                ->assertAttribute('#title_pt', "data-original-title", "The title field is required.")
                ->assertAttribute('#lang_slug_pt', "data-original-title", "The lang slug.pt field is required.")

                ->click('#lang_tab_en')
                ->assertAttribute('#lang_slug_en', "data-original-title", "The lang slug.en field is required.");
        });
    }

    public function testShouldCreatePage()
    {
        $this->browse(function (Browser $browser) {

            // Session remains within TestCase

            $browser->visit('/admin/content/form/page')
                ->assertSee('Title')
                ->type('#title_en', 'Test Page EN')
                ->type('#redactor-uuid-0', 'Test Page EN content')
                ->select('#template', 'homepage')
                ->type('#lang_slug_en', 'test-page-1')
                ->click('#lang_tab_pt')
                ->type('#title_pt', 'Test Page PT')
                ->type('#redactor-uuid-1', 'Test Page PT content')
                ->type('#lang_slug_pt', 'test-page-pt-1')
                ->click('#backend_save_btn')

                ->waitForText('Changes saved with success.')

                ->assertPathIs('/admin/content/form/page/1')
                ->assertSee('Changes saved with success.');

            $browser->visit('/test-page-1')
                ->waitForText('Test for Pages')
                ->assertPathIs('/test-page-1')
                ->assertSee('Title: Test Page EN');

            $browser->visit('/pt/test-page-pt-1')
                ->waitForText('Test for Pages')
                ->assertPathIs('/pt/test-page-pt-1')
                ->assertSee('Title: Test Page PT');
        });
    }
}
