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