<?php

namespace Tests\Browser;

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

use App\Models\User;
use App\Models\Page;
use Tests\Browser\Pages\Login;
use Tests\Browser\Components\Feedback;

class EditingButtonTest extends DuskTestCase
{
    public function test_a_user_can_toggle_editing()
    {
        $this->browse(function (Browser $browser) {
            $user = User::factory()->create();
            $page = (new Page())->findByFullSlug('hub');
            $user->createPermission('update', $page);
            $user->addRole('pages-editor');

            $browser->visit('/')
                ->assertNotPresent('@editing-button')
                ->visit(new Login())
                ->loginUser($user)
                ->visit('/hub')
                ->waitFor('@user-menu')
                ->click('@user-menu')
                ->pause(1500)
                ->assertPresent('@logout-button')
                ->assertPresent('@editing-button')
                ->pause(1500)
                ->clickAndWaitForReload('@editing-button')
                ->within(new Feedback(), function ($browser) {
                    $browser->assertFeedbackContains('Editing Enabled');
                })
                ->assertPresent('@page-editor')
                ->pause(1500)
                ->clickAndWaitForReload('@editing-button')
                ->pause(1500)
                ->assertNotPresent('@page-editor');
        });
    }
}
