File: D:/HostingSpaces/meuwis/lmbm.be/app/KommaApp/Shop/Tests/Browser/ProductCompositeTest.php
<?php
namespace App\KommaApp\Shop\Tests\Browser;
use App\KommaApp\Shop\Products\Product\Product;
use App\KommaApp\Shop\Products\ProductGroup\ProductGroup;
use App\KommaApp\Shop\Products\ProductGroupBehaviour\ProductGroupBehaviour;
use App\KommaApp\Shop\Tests\Browser\Pages\ProductCompositeSectionTestPage;
use App\KommaApp\Shop\Tests\DuskTestCase;
use App\KommaApp\Users\Models\User;
use Laravel\Dusk\Browser;
class ProductCompositeTest extends DuskTestCase
{
// use DatabaseTransactions; //Automatically rolls back database actions after tests
/**
* @group ProductCompositeSection
* @test
*/
public function testProductsGroupMenuItem()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(User::find(1))
->visit(new ProductCompositeSectionTestPage())
->screenshot($this->getName(false));
});
}
/**
* @group ProductCompositeSection
* @test
*/
public function testNewProductGroupScreen()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(User::find(1))
->visit(new ProductCompositeSectionTestPage())
->click('@addButton')
->assertSee('Nieuwe samengestelde product groep')
->screenshot($this->getName(false));
});
}
/**
* @group ProductCompositeSection
* @test
*/
public function testAddingOfEmptyProductGroupFailure()
{
$this->browse(function (Browser $browser) {
$browser->loginAs(User::find(1))
->visit(new ProductCompositeSectionTestPage())
->click('@addButton')
->assertSee('Nieuwe samengestelde product groep')
->click('@saveButton')
->assertSee('titel is verplicht.')
->screenshot($this->getName(false));
});
}
/**
* @group ProductCompositeSection
* @test
*/
public function testAddingProductCompositeCorrectlyAndDeletingIt()
{
$productCompositeName = 'Dusk test composite group ' . mt_rand(0, 99999);
//Create 1 product that we add to the groups for testing purposes
/** @var Product $product */
$product = factory(Product::class)->create();
$product->save();
$behaviourOr = factory(ProductGroupBehaviour::class)->create();
$behaviourOr->save();
/** @var ProductGroup $productGroup */
$productGroup = factory(ProductGroup::class)->make();
$productGroup->productGroupBehaviour()->associate($behaviourOr);
$productGroup->save();
$productGroup->products()->attach($product);
/** @var ProductGroup $productGroup2 */
$productGroup2 = factory(ProductGroup::class)->make();
$productGroup2->productGroupBehaviour()->associate($behaviourOr);
$productGroup2->save();
$productGroup2->products()->attach($product);
$counter = 0;
$this->browse(function (Browser $browser) use ($productCompositeName, $counter, $productGroup, $productGroup2) {
$browser->loginAs(User::find(1))
->visit(new ProductCompositeSectionTestPage())
->click('@addButton')
->assertSee('Nieuwe samengestelde product groep')
->type('TextField-title', $productCompositeName)
->screenshot($this->getName(false) . '-' . ++$counter)
->type('#AutocompleteInput-groups-fake', $productGroup->title)->pause(350)
->keys('#AutocompleteInput-groups-fake', '{down}')->pause(350)
->keys('#AutocompleteInput-groups-fake', '{enter}')->pause(350)
->assertSee($productGroup->title)
->screenshot($this->getName(false) . '-' . ++$counter)
->type('#AutocompleteInput-groups-fake', $productGroup2->title)->pause(350)
->keys('#AutocompleteInput-groups-fake', '{down}')->pause(350)
->keys('#AutocompleteInput-groups-fake', '{enter}')->pause(350)
->assertSee($productGroup2->title)
->screenshot($this->getName(false) . '-' . ++$counter)
->click('@saveButton')
->assertSeeIn('#main-entities-list > ul', $productCompositeName)
->screenshot($this->getName(false));
});
$counter = 0;
$this->browse(function (Browser $browser) use ($productCompositeName, $counter) {
$browser->visit(new ProductCompositeSectionTestPage())
->type('@searchInput', $productCompositeName)
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#search-result-counter', '1')
->click('#productcomposites-searchlist > li.entities-list-item.active > a')
->screenshot($this->getName(false) . '-' . ++$counter)
->assertSeeIn('#entity > div.entity-header > div.entity-header-attributes > h2', $productCompositeName)
->click('@deleteButton')
->assertSee(__('kms/global.confirm_deletion'))
->click('@confirmYes')
->assertSee(__('kms/global.removed'))
->screenshot($this->getName(false) . '-' . ++$counter);
});
$productGroup->delete();
$productGroup2->delete();
$behaviourOr->delete();
$product->delete();
}
}