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/SBogers10/inzigd.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\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))
                ->screenshot($this->getName(false))
                ->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('@add_button')
                ->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('@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
     */
    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('@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
     */
    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('@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);
        });
    }
}