File: D:/HostingSpaces/SBogers10/stafa.komma.pro/app/Komma/Shop/Tests/Browser/CategoryTest.php
<?php
namespace App\Komma\Shop\Tests\Browser;
use App\Komma\Shop\Tests\Browser\Pages\CategoriesSectionTestPage;
use App\Komma\Shop\Tests\DuskTestCase;
use App\Komma\Users\Models\KmsUser;
use Laravel\Dusk\Browser;
class CategoryTest extends DuskTestCase
{
// use DatabaseTransactions; //Automatically rolls back database actions after tests
/**
* @group CategoriesSection
* @test
* @throws \Throwable
*/
public function testCategoriesMenuItem()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(1, 'kms')
->visit(new CategoriesSectionTestPage())
->screenshot($this->getName(false));
});
}
/**
* @group CategoriesSection
* @test
* @throws \Throwable
*/
public function testNewCategoryScreen()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(1, 'kms')
->visit(new CategoriesSectionTestPage())
->click('@add_button')
->assertSee('Nieuwe product categorie')
->screenshot($this->getName(false));
});
}
/**
* @group CategoriesSection
* @test
* @throws \Throwable
*/
public function testAddingOfEmptyCategoryFailure()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(1, 'kms')
->visit(new CategoriesSectionTestPage())
->click('@add_button')
->assertSee('Nieuwe product categorie')
->pause(300)
->screenshot($this->getName().'_save_clicked')
->click('@save_button')
->waitFor('#flash-message')
->assertSee(__('validation.required', ['attribute' => __('kms/global.title')])) //titel is verplicht
->screenshot($this->getName(false));
});
}
/**
* @group CategoriesSection
* @test
* @throws \Throwable
*/
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(1, 'kms')
->visit(new CategoriesSectionTestPage())
->click('@add_button')
->assertSee('Nieuwe product categorie')
->click('@entity_tab_en')
->type('@TextField-name-en', $categoryTestName)
->click('@entity_tab_de')
->type('@TextField-name-de', $categoryTestName)
->click('@entity_tab_nl')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-nl', $categoryTestName)
->click('@entity_tab_de')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-de', $categoryTestName)
->click('@entity_tab_en')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-en', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->click('@save_button')
->waitFor('#categories > li:nth-child(1)')
->type('@entity_search_input', $categoryTestName)
->pause(200)
->assertSeeIn('@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('@entity_search_input', $categoryTestName) //Already done by the add part.
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('@search-result-counter', '1')
->click('@found_search_item')
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('@entity_header', $categoryTestName)
->click('@delete_button')
->pause(300)
->click('@confirmation_confirm')
->waitForText(__('kms/global.removed'))
->screenshot($this->getName(false) . '-' . ++$counter);
});
}
/**
* @group CategoriesSection
* @test
* @throws \Throwable
*/
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(1, 'kms')
//Add category 1
->visit(new CategoriesSectionTestPage())
->click('@add_button')
->assertSee('Nieuwe product categorie')
->click('@entity_tab_en')
->type('@TextField-name-en', $categoryTestName)
->click('@entity_tab_de')
->type('@TextField-name-de', $categoryTestName)
->click('@entity_tab_nl')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-nl', $categoryTestName)
->click('@entity_tab_de')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-de', $categoryTestName)
->click('@entity_tab_en')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-en', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->click('@save_button')
->waitFor('#categories > li:nth-child(1)')
->type('@entity_search_input', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('@searchlist', $categoryTestName)
->screenshot($this->getName(false))
//Add category 2 and make it a child of category 1
->visit(new CategoriesSectionTestPage())
->click('@add_button')
->assertSee('Nieuwe product categorie')
->click('@entity_tab_en')
->type('@TextField-name-en', $categoryTestName2)
->click('@entity_tab_de')
->type('@TextField-name-de', $categoryTestName2)
->click('@entity_tab_nl')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-nl', $categoryTestName2)
->click('@entity_tab_de')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-de', $categoryTestName2)
->click('@entity_tab_en')
->screenshot($this->getName(false) . '-' . ++$counter)
->type('@TextField-name-en', $categoryTestName2)
->screenshot($this->getName(false) . '-' . ++$counter)
->click('@entity_tab_algemeen')
->click('@parentSelect')
->click('@parentSelectLastItem') #Last item is last added category.
->assertSeeIn('@parentSelect', $categoryTestName)
->click('@save_button')
->waitFor('#categories > li:nth-child(1)')
->assertSeeIn('@parentSelect', $categoryTestName)
->type('@entity_search_input', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('@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('@entity_search_input', $categoryTestName2)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('@search-result-counter', '1')
->click('@found_search_item')
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('@entity_header', $categoryTestName2)
->click('@delete_button')
->pause(1000)
->click('@confirmation_confirm')
->waitForText(__('kms/global.removed'))
->screenshot($this->getName(false) . '-' . ++$counter)
->pause(1000) //wait till tree is loaded completely
//Delete category 1
->type('@entity_search_input', $categoryTestName)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('@search-result-counter', '1')
->click('@found_search_item')
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('@entity_header', $categoryTestName)
->click('@delete_button')
->pause(500)
->click('@confirmation_confirm')
->waitForText(__('kms/global.removed'))
->screenshot($this->getName(false) . '-' . ++$counter);
});
}
}