<?php

namespace Tests\Browser\Components;

use Laravel\Dusk\Browser;
use Laravel\Dusk\Component as BaseComponent;

use Tests\ObjectsTrait;

class PageEditor extends BaseComponent
{
    use ObjectsTrait;

    /**
     * Get the root selector for the component.
     *
     * @return string
     */
    public function selector()
    {
        return '@page-editor';
    }

    /**
     * Assert that the browser page contains the component.
     *
     * @param  Browser  $browser
     * @return void
     */
    public function assert(Browser $browser)
    {
        $browser->assertVisible($this->selector());
    }

    public function previewPage(Browser $browser, $page)
    {
        $browser->waitFor('@preview-page')
            ->click('@preview-page');

        $window = collect($browser->driver->getWindowHandles())->last();
        $browser->driver->switchTo()->window($window);

        $full_slug = $this->getEditingValue($page, 'full_slug');

        $browser->assertQueryStringHas('preview')
            ->assertQueryStringHas('signature')
            ->assertPathIs('/'.$full_slug)
            ->pause(500)
            ->assertTitleContains('Preview');
    }
}
