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/slenders/slenders.nl/tests/Browser/SiteMultiLanguageTest.php
<?php

namespace Tests\Browser;

use App\Komma\Globalization\Languages\Models\Language;
use App\Komma\Sites\Kms\SiteService;
use App\Komma\Sites\Models\Site;
use App\Komma\Sites\SiteServiceInterface;
use App\Komma\Users\Models\KmsUser;
use App\Komma\Users\Models\SiteUser;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;

class SiteMultiLanguageTest extends DuskTestCase
{
    /**
     * Opens the home page url at different languages and looks at the
     * sign out button translation to verify that the
     * translation was set after visiting
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testMultiLanguageHomePage()
    {
        $languages = $this->getCurrentLanguages();

        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $iso2 = $currentLanguage->iso_2;
            if($iso2 == 'nl') $iso2 = '';

            $this->browse(function (Browser $browser) use ($iso2) {
                $browser->loginAs(SiteUser::first(), 'site')
                    ->visit('/'.$iso2)
                    ->assertValue('@site_logout', __('auth.log_out'));
            });
        }
    }

    /**
     * Tests the login page localisation
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testMultiLanguageLogin()
    {
        $languages = $this->getCurrentLanguages();
        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $iso2 = $currentLanguage->iso_2;

            $this->browse(function (Browser $browser) use ($iso2) {
                $browser->visit(localized_route('site.login'))
                    ->assertSee(__('site/form.email.label'))
                    ->assertSee(__('site/form.password.label'))
                    ->assertValue('@log_in', __('auth.log_in'))
                    ->assertSee(__('auth.forgot_password'));
            });
        }
    }

    /**
     * Tests the request password form localisation
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testPasswordRequestForm()
    {
        $languages = $this->getCurrentLanguages();
        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $iso2 = $currentLanguage->iso_2;

            $this->browse(function (Browser $browser) use ($iso2) {
                $browser->visit(localized_route('site.password.request'))
                    ->assertSee(__('site/form.email.label'))
                    ->assertValue('@send_email', __('auth.send_email'));
            });
        }
    }

    /**
     * Tests the rest form localisation
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testPasswordResetForm()
    {
        $languages = $this->getCurrentLanguages();
        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $iso2 = $currentLanguage->iso_2;

            $this->browse(function (Browser $browser) use ($iso2) {
                $browser->visit(localized_route('site.password.reset', ['faketoken']))
                    ->assertSee(__('site/form.email.label'))
                    ->assertSee(__('site/form.password.label'))
                    ->assertSee(__('site/form.password_confirmation.label'));
            });
        }
    }

    /**
     * Tests the rest form localisation
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testPasswordSetForm()
    {
        $languages = $this->getCurrentLanguages();
        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $iso2 = $currentLanguage->iso_2;

            $this->browse(function (Browser $browser) use ($iso2) {
                $browser->visit(localized_route('site.password.set'))
                    ->assertSee(__('site/form.email.label'))
                    ->assertSee(__('site/form.password.label'))
                    ->assertSee(__('site/form.password_confirmation.label'));
            });
        }
    }

    /**
     * Tests the register form localisation
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testRegisterForm()
    {
        $languages = $this->getCurrentLanguages();
        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $iso2 = $currentLanguage->iso_2;

            $this->browse(function (Browser $browser) use ($iso2) {
                $browser->visit(localized_route('site.register'))
                    ->assertSee(__('site/form.email.label'))
                    ->assertSee(__('site/form.password.label'))
                    ->assertSee(__('site/form.password_confirmation.label'))
                    ->assertSee(__('site/form.first_name.label'))
                    ->assertSee(__('site/form.last_name.label'));
            });
        }
    }

    /**
     * Tests the register password mail localisation
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testResetPasswordMail()
    {
        $languages = $this->getCurrentLanguages();
        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $this->browse(function (Browser $browser) {
                $browser->visit(localized_route('preview.mail.reset_password'))
                    ->screenshot('testResetPasswordMail for '.\App::getLanguage()->iso_2)
                    ->assertSee(__('notifications.customer_reset_password.subject'))
                    ->assertSee(__('notifications.customer_reset_password.mail_intro'))
                    ->assertSee(__('notifications.customer_reset_password.mail_action'))
                    ->assertSee(__('notifications.customer_reset_password.mail_outro'));
            });
        }
    }

    /**
     * Tests the set password mail localisation
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testSetPasswordMail()
    {
        $languages = $this->getCurrentLanguages();
        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $iso2 = $currentLanguage->iso_2;

            $this->browse(function (Browser $browser) use ($iso2) {
                $browser->visit(localized_route('preview.mail.set_password'))
                    ->assertSee(__('notifications.customer_set_password.subject'))
                    ->assertSee(__('notifications.customer_set_password.mail_intro'))
                    ->assertSee(__('notifications.customer_set_password.mail_action'))
                    ->assertSee(__('notifications.customer_set_password.mail_outro'));
            });
        }
    }

    /**
     * Tests the set password mail localisation
     *
     * @test
     * @group SiteMultiLanguage
     */
    public function testResetPasswordMailKms()
    {
        $languages = $this->getCurrentLanguages();
        foreach($languages as $currentLanguage) {
            /** @var $currentLanguage Language */
            \App::setLanguage($currentLanguage);
            $this->assertEquals($currentLanguage, \App::getLanguage());

            $iso2 = $currentLanguage->iso_2;

            $this->browse(function (Browser $browser) use ($iso2) {
                $browser->visit(localized_route('preview.mail.reset_password_kms'))
                    ->assertSee(__('notifications.kms_reset_password.subject'))
                    ->assertSee(__('notifications.kms_reset_password.mail_intro'))
                    ->assertSee(__('notifications.kms_reset_password.mail_action'))
                    ->assertSee(__('notifications.kms_reset_password.mail_outro'));
            });
        }
    }

    /**
     * Helper function
     */
    private function getCurrentLanguages()
    {
        /** @var SiteService $siteService */
        $siteService = app(SiteServiceInterface::class);

        /** @var Site $site */
        $siteService->setCurrentSiteToDefault();
        $site = $siteService->getCurrentSite();
        return $site->languages;
    }
}