DefaultNegotiationTest   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 41
rs 10
c 0
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testSelectedLanguagesWithUserLanguages() 0 14 1
A testNoLanguagesWithEmptyUserLanguages() 0 10 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Lochmueller\LanguageDetection\Tests\Unit\Negotiation;
6
7
use Lochmueller\LanguageDetection\Domain\Collection\LocaleCollection;
8
use Lochmueller\LanguageDetection\Event\NegotiateSiteLanguageEvent;
9
use Lochmueller\LanguageDetection\Negotiation\DefaultNegotiation;
10
use Lochmueller\LanguageDetection\Service\Normalizer;
11
use Lochmueller\LanguageDetection\Tests\Unit\AbstractUnitTest;
12
use Psr\Http\Message\ServerRequestInterface;
13
use TYPO3\CMS\Core\Http\Uri;
14
use TYPO3\CMS\Core\Site\Entity\Site;
15
use TYPO3\CMS\Core\Site\Entity\SiteLanguage;
16
17
/**
18
 * @internal
19
 *
20
 * @coversNothing
21
 */
22
class DefaultNegotiationTest extends AbstractUnitTest
23
{
24
    /**
25
     * @covers \Lochmueller\LanguageDetection\Domain\Collection\LocaleCollection
26
     * @covers \Lochmueller\LanguageDetection\Event\NegotiateSiteLanguageEvent
27
     * @covers \Lochmueller\LanguageDetection\Negotiation\DefaultNegotiation
28
     * @covers \Lochmueller\LanguageDetection\Service\Normalizer
29
     */
30
    public function testNoLanguagesWithEmptyUserLanguages(): void
31
    {
32
        $negotiation = new DefaultNegotiation(new Normalizer());
33
34
        $site = $this->createMock(Site::class);
35
36
        $event = new NegotiateSiteLanguageEvent($site, $this->createMock(ServerRequestInterface::class), LocaleCollection::fromArray([]));
37
        $negotiation($event);
38
39
        self::assertNull($event->getSelectedLanguage());
40
    }
41
42
    /**
43
     * @covers \Lochmueller\LanguageDetection\Domain\Collection\LocaleCollection
44
     * @covers \Lochmueller\LanguageDetection\Domain\Model\Dto\LocaleValueObject
45
     * @covers \Lochmueller\LanguageDetection\Event\NegotiateSiteLanguageEvent
46
     * @covers \Lochmueller\LanguageDetection\Negotiation\DefaultNegotiation
47
     * @covers \Lochmueller\LanguageDetection\Service\Normalizer
48
     */
49
    public function testSelectedLanguagesWithUserLanguages(): void
50
    {
51
        $negotiation = new DefaultNegotiation(new Normalizer());
52
53
        $en = new SiteLanguage(0, 'en_GB', new Uri('/en/'), ['enabled' => true]);
54
        $de = new SiteLanguage(1, 'de_DE', new Uri('/en/'), ['enabled' => true]);
55
56
        $site = $this->createStub(Site::class);
57
        $site->method('getLanguages')->willReturn([$en, $de]);
58
59
        $event = new NegotiateSiteLanguageEvent($site, $this->createMock(ServerRequestInterface::class), LocaleCollection::fromArray(['de_DE', 'en_GB']));
60
        $negotiation($event);
61
62
        self::assertSame($de, $event->getSelectedLanguage());
63
    }
64
}
65