<?php

namespace Tests\Browser;

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

use Tests\Browser\Components\Feedback;

use App\Models\Page;

class FeedbackTest extends DuskTestCase
{
    public function test_url_params_can_be_processed()
    {
        $this->browse(function ($browser) {
            $page = Page::factory()->create();
            $page->publish();
            $page->refresh();
            $this->assertNotNull($page->full_slug);

            $browser->visit($page->full_slug)
                    ->assertPathIs('/'.$page->full_slug)

                    ->visit($page->full_slug.'?success=Foobar')
                    ->assertPathIs('/'.$page->full_slug)
                    ->within(new Feedback(), function ($browser) {
                        $browser->assertFeedbackContains('Foobar');
                    })
                    ->pause(250)
                    ->assertQueryStringMissing('success')

                    ->visit($page->full_slug.'?error=BarBaz')
                    ->assertPathIs('/'.$page->full_slug)
                    ->within(new Feedback(), function ($browser) {
                        $browser->assertFeedbackContains('BarBaz');
                    })
                    ->pause(250)
                    ->assertQueryStringMissing('error')

                    ->visit($page->full_slug.'?error=BarBaz&success=Foobar&foobar=baz')
                    ->assertPathIs('/'.$page->full_slug)
                    ->within(new Feedback(), function ($browser) {
                        $browser->assertFeedbackContains('BarBaz');
                    })
                    ->pause(250)
                    ->assertQueryStringMissing('success')
                    ->assertQueryStringMissing('error')
                    ->assertQueryStringHas('foobar', 'baz');
        });
    }
}
