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/werkenbij.komma.pro/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 Illuminate\Support\Facades\App;
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();

        $toSee = [
            'de' => 'Herzlich willkommen!',
            'en' => 'Welcome!',
            'nl' => 'Welkom!'
        ];

        $this->browse(function (Browser $browser) use ($languages, $toSee) {
            foreach($languages as $currentLanguage) {
                $iso2 = $currentLanguage->iso_2;
                if(!isset($toSee[$iso2])) continue;

                /** @var $currentLanguage Language */
                App::setLanguage($currentLanguage);
                $this->assertEquals($currentLanguage, App::getLanguage());
                $browser->visit($iso2 =='nl' ? '/' : '/'.$iso2)
                    ->assertSee($toSee[$iso2]);
            }
        });
    }

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

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