File: D:/HostingSpaces/egovers/edwingovers.nl/app/KommaApp/Shop/Tests/Browser/CategoryTest.php
<?php
namespace App\KommaApp\Shop\Tests\Browser;
use App\KommaApp\Shop\Tests\Browser\Pages\CategoriesSectionTestPage;
use App\KommaApp\Shop\Tests\DuskTestCase;
use App\KommaApp\Users\Models\User;
use Laravel\Dusk\Browser;
class CategoryTest extends DuskTestCase
{
// use DatabaseTransactions; //Automatically rolls back database actions after tests
/**
* @group CategoriesSection
* @test
*/
public function testCategoriesMenuItem()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(User::find(1))
->visit(new CategoriesSectionTestPage())
->screenshot($this->getName(false));
});
}
/**
* @group CategoriesSection
* @test
*/
public function testNewCategoryScreen()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(User::find(1))
->visit(new CategoriesSectionTestPage())
->click('@addButton')
->assertSee('Nieuwe product categorie')
->screenshot($this->getName(false));
});
}
/**
* @group CategoriesSection
* @test
*/
public function testAddingOfEmptyCategoryFailure()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(User::find(1))
->visit(new CategoriesSectionTestPage())
->click('@addButton')
->assertSee('Nieuwe product categorie')
->pause(300)
->click('@saveButton')
->waitFor('#flash-message')
->assertSee('titel is verplicht.')
->screenshot($this->getName(false));
});
}
/**
* @group CategoriesSection
* @test
*/
public function testAddingCategoryCorrectlyAndDeletingIt()
{
$categoryTestName = 'A dusk test category ' . mt_rand(0, 99999);
//Add
$counter = 0;
$this->browse(function (Browser $browser) use ($categoryTestName, $counter) {
$browser->loginAs(User::find(1))
->visit(new CategoriesSectionTestPage())
->click('@addButton')
->assertSee('Nieuwe product categorie')
->click('@nlTab')
->type('TextField-name-nl', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->click('@saveButton')
->pause(200)
->type('@searchInput', $categoryTestName)
->assertSeeIn('#categories-searchlist', $categoryTestName)
->screenshot($this->getName(false));
});
//Delete category
$counter = 0;
$this->browse(function (Browser $browser) use ($categoryTestName, $counter) {
$browser->visit(new CategoriesSectionTestPage())
->pause(1000)
->type('@searchInput', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#search-result-counter', '1')
->click('#categories-searchlist > li.entities-list-item.active > a')
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#entity > div.entity-header > div.entity-header-attributes > h2', $categoryTestName)
->click('@deleteButton')
->click('@confirmYes')
->assertSee(__('kms/global.removed'))
->screenshot($this->getName(false) . '-' . ++$counter);
});
}
/**
* @group CategoriesSection
* @test
*/
public function testCategoryTree()
{
$categoryTestName = 'Dusk test category ' . mt_rand(0, 99999);
$categoryTestName2 = 'Dusk test category 2 ' . mt_rand(0, 99999);
$counter = 0;
$this->browse(function (Browser $browser) use ($categoryTestName, $categoryTestName2, $counter) {
$browser->loginAs(User::find(1))
//Add category 1
->visit(new CategoriesSectionTestPage())
->click('@addButton')
->assertSee('Nieuwe product categorie')
->click('@nlTab')
->type('TextField-name-nl', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->click('@saveButton')
->pause(100)
->type('@searchInput', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#categories-searchlist', $categoryTestName)
->screenshot($this->getName(false))
//Add category 2 and make it a child of category 1
->visit(new CategoriesSectionTestPage())
->click('@addButton')
->assertSee('Nieuwe product categorie')
->click('@nlTab')
->type('TextField-name-nl', $categoryTestName2)
->screenshot($this->getName(false) . '-' . ++$counter)
->click('@generalTab')
->click('@parentSelect')
->click('@parentSelectLastItem') #Last item is last added category.
->assertSeeIn('@parentSelect', $categoryTestName)
->click('@saveButton')
->pause(100)
->assertSeeIn('@parentSelect', $categoryTestName)
->type('@searchInput', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#categories-searchlist', $categoryTestName)
->screenshot($this->getName(false));
});
$this->browse(function (Browser $browser) use ($categoryTestName, $categoryTestName2, $counter) {
$browser->visit(new CategoriesSectionTestPage())
->pause(1000) //wait till tree is loaded completely
//Delete category 2
->type('@searchInput', $categoryTestName2)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#search-result-counter', '1')
->click('#categories-searchlist > li.entities-list-item.active > a')
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#entity > div.entity-header > div.entity-header-attributes > h2', $categoryTestName2)
->click('@deleteButton')
->click('@confirmYes')
->assertSee(__('kms/global.removed'))
->screenshot($this->getName(false) . '-' . ++$counter)
//Delete category 1
->type('@searchInput', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#search-result-counter', '1')
->click('#categories-searchlist > li.entities-list-item.active > a')
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#entity > div.entity-header > div.entity-header-attributes > h2', $categoryTestName)
->click('@deleteButton')
->click('@confirmYes')
->assertSee(__('kms/global.removed'))
->screenshot($this->getName(false) . '-' . ++$counter);
});
}
}