HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/boldt.komma.pro/tests/Browser/UserTest.php
<?php

namespace Tests\Browser;

use App\Komma\Users\Models\User;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Laravel\Dusk\Browser;
use Tests\Browser\Pages\UsersSectionTestPage;
use Tests\DuskTestCase;

class UserTest extends DuskTestCase
{
    use DatabaseTransactions; //Automatically rolls back database actions after tests

    /**
     * @group UserTest
     * @test
     */
    public function testCreateEmptyUser()
    {
        $this->browse(function (Browser $browser) {
            $browser->loginAs(User::find(1))
                ->visit(new UsersSectionTestPage())
                ->screenshot($this->getName())
                ->assertSee(__('kms/users.section.subtitle'))
                ->click('@add_button')
                ->screenshot($this->getName())
                ->click('@save_button')
                ->assertSee(__('validation.required', ['attribute' => __('kms/global.username')])) //gebruikersnaam is verplicht
                ->screenshot($this->getName());
        });
    }

    /**
     * @group UserTest
     * @test
     */
    public function testCreateUserWithUsernameAndEmailOnly()
    {
        $this->browse(function (Browser $browser) {
            $browser->loginAs(User::find(1))
                ->visit(new UsersSectionTestPage())
                ->screenshot($this->getName())
                ->assertSee(__('kms/users.section.subtitle'))
                ->click('@add_button')
                ->screenshot($this->getName())
                ->type('@TextField-username', 'DuskTestUser_'.str_random())
                ->type('@TextField-email', 'support_'.str_random().'@komma.pro')
                ->screenshot($this->getName())
                ->click('@save_button')
                ->assertSee(__('kms/global.saved'))
                ->screenshot($this->getName());
        });
    }

    /**
     * @group UserTest
     * @test
     */
    public function testCreateUserWithUserNameFirstNameEmailAndPasswordAndDeleteIt()
    {
        $randomUser = factory(User::class, 1)->make()->first();

        $this->browse(function (Browser $browser) use ($randomUser) {
            $browser->loginAs(User::find(1))
                ->visit(new UsersSectionTestPage())
                ->screenshot($this->getName())
                ->assertSee(__('kms/users.section.subtitle'))
                ->click('@add_button')
                ->screenshot($this->getName())
                ->type('@TextField-username', $randomUser->username)
                ->type('@TextField-first_name', $randomUser->first_name)
                ->type('@TextField-email', $randomUser->email)
                ->type('@Password-password-1', 'Admin123')
                ->type('@Password-password-2', 'Admin123')
                ->screenshot($this->getName())
                ->pause(5000)
                ->click('@save_button');


            //Delete user
            $counter = 0;
            $this->browse(function (Browser $browser) use ($randomUser, $counter) {
                $browser->visit(new UsersSectionTestPage())
                    ->type('@entity_search_input', $randomUser->first_name)
                    ->screenshot($this->getName(false).'-'.++$counter)
                    ->assertSeeIn('@search-result-counter', '1')
                    ->click('@found_search_item')
                    ->screenshot($this->getName(false).'-'.++$counter)
                    ->pause(2000)
                    ->assertInputValue('@TextField-username', $randomUser->username)
                    ->click('@delete_button')
                    ->assertSee(__('kms/global.confirm_deletion'))
                    ->click('@confirmation_confirm')
                    ->pause(1000)
                    ->assertSee(__('kms/global.removed'))
                    ->screenshot($this->getName(false).'-'.++$counter);
            });
        });
    }

    /**
     * @group UserTest
     * @test
     */
    public function testCreateUserWithUserNameFirstNameEmailAndPasswordTestLogin()
    {
        $randomUser = factory(User::class, 1)->make()->first();
        $counter = 0;

        $this->browse(function (Browser $browser) use ($randomUser, $counter) {
            $browser->loginAs(User::find(1))
            ->visit(new UsersSectionTestPage)
            ->screenshot($this->getName().'_customers_screen_'.$counter++)
            ->assertSee(__('kms/users.section.subtitle'))
            ->click('@add_button')
            ->screenshot($this->getName().'_customers_screen_'.$counter++)
            ->type('@TextField-username', $randomUser->username)
            ->type('@TextField-first_name', $randomUser->first_name)
            ->type('@TextField-last_name', $randomUser->last_name)
            ->type('@TextField-email', $randomUser->email)
            ->type('@Password-password-1', 'Admin123')
            ->type('@Password-password-2', 'Admin123')
            ->screenshot($this->getName())
            ->click('@save_button')

            //Test login
            ->pause(3000)
            ->logout() //It cannot press the logout button because the debug bar is overlapping
            ->visit('kms/users')
            ->assertSee(__('auth.log_in'))
            ->type('@email', $randomUser->email)
            ->type('@password', 'Admin123')
            ->click('@submit')
            ->assertSee(__('kms/users.section.title'))

            //Visit the users page again and save the user without making changes. This must not change the password and still enable the user to login
            ->visit(new UsersSectionTestPage())
            ->screenshot($this->getName())
            ->assertSee(__('kms/users.section.subtitle'))
            ->type('@entity_search_input', $randomUser->first_name.' '.$randomUser->last_name)
            ->screenshot($this->getName(false) . '-' . ++$counter)
            ->assertSeeIn('@search-result-counter', '1')
            ->click('@found_search_item')
            ->screenshot($this->getName(false) . '-' . ++$counter)
            ->assertSeeIn('@entity_header', $randomUser->first_name.' '.$randomUser->last_name)
            ->screenshot($this->getName(false) . '-' . 'reopened')
            ->click('@save_button')

            //Test login
            ->click('#sidebar > form > input.log-out')
            ->assertSee(__('auth.log_in'))
            ->type('@email', $randomUser->email)
            ->type('@password', 'Admin123')
            ->click('@submit')
            ->assertSee(__('kms/users.section.title'));
        });
    }
}