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'));
});
}
}