SessionInitializerTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 3
eloc 13
c 1
b 1
f 0
dl 0
loc 34
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A createUser() 0 5 1
A testInitializeReturnsEarlyIfAlreadyInitialized() 0 10 1
A testInitializeSetsUserSessionIfNotYetInitialized() 0 10 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Admin\Service;
6
7
use AbterPhp\Admin\Domain\Entities\User;
8
use AbterPhp\Admin\Domain\Entities\UserLanguage;
9
use AbterPhp\Framework\TestDouble\Session\MockSessionFactory;
10
use PHPUnit\Framework\TestCase;
11
12
class SessionInitializerTest extends TestCase
13
{
14
    public function testInitializeReturnsEarlyIfAlreadyInitialized()
15
    {
16
        $user = $this->createUser();
17
18
        $sessionMock = MockSessionFactory::create($this, ['user_id' => 'user-1']);
19
        $sessionMock->expects($this->never())->method('set');
20
21
        $sut = new SessionInitializer($sessionMock);
22
23
        $sut->initialize($user);
24
    }
25
26
    public function testInitializeSetsUserSessionIfNotYetInitialized()
27
    {
28
        $user = $this->createUser();
29
30
        $sessionMock = MockSessionFactory::create($this, ['foo' => 'bar']);
31
        $sessionMock->expects($this->atLeastOnce())->method('set');
32
33
        $sut = new SessionInitializer($sessionMock);
34
35
        $sut->initialize($user);
36
    }
37
38
    /**
39
     * @return User
40
     */
41
    protected function createUser(): User
42
    {
43
        $language = new UserLanguage('lang-1', 'lang-hashtag-1', 'Lang #1');
44
45
        return new User('user-1', 'bar', 'baz', 'quix', false, false, $language, []);
46
    }
47
}
48