<?php

namespace Tests\Browser\Content;

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

class SliderItemTest extends DuskTestCase
{
    use DatabaseMigrations;
    use AuthTrait;

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

            $this->loginToAdminBackend();

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

                ->assertAttribute('#title_en', "data-original-title", "The Title 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 testShouldCreateSliderItemWithoutImage()
    {
        $this->browse(function (Browser $browser) {

            // Session remains within TestCase

            $browser->visit('/admin/content/form/sliderItems')
                ->assertSee('Title')
                ->type('#title_en', 'Test SliderItem EN')
                ->type('#description_en', 'Test Slider Description EN')
                ->type('#lang_slug_en', 'test-slider-en')
                ->click('#lang_tab_pt')
                ->type('#title_pt', 'Test SliderItem PT')
                ->type('#description_pt', 'Test Slider Description PT')
                ->type('#lang_slug_pt', 'test-slider-pt')
                ->click('#backend_save_btn')

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

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

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

            // Session remains within TestCase

            $browser->visit('/admin/content/form/sliderItems')
                ->assertSee('Title')
                ->type('#title_en', 'Test SliderItem EN')
                ->type('#description_en', 'Test Slider Description EN')
                ->type('#lang_slug_en', 'test-slider-en')
                ->click('#lang_tab_pt')
                ->type('#title_pt', 'Test SliderItem PT')
                ->type('#description_pt', 'Test Slider Description PT')
                ->type('#lang_slug_pt', 'test-slider-pt')
                ->click('.select-media')
                ->whenAvailable('#media_manager', function ($mediaModal) {
                    $mediaModal->attach('#upload_media_input', 'tests/Browser/resources/eae_for_tests.png')
                        ->pause(100)
                        ->assertPresent('#media_box_1')
                        ->click('.done-select');
                })
                ->pause(500)
                ->click('#backend_save_btn')
                ->pause(100)

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

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