File: D:/HostingSpaces/blijegasten/blijegasten.be/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());
//dd(localized_route('preview.mail.reset_password'));
$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;
}
}