MockTranslatorFactory   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 23
c 0
b 0
f 0
dl 0
loc 46
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A createSimpleTranslator() 0 38 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Framework\TestDouble\I18n;
6
7
use AbterPhp\Framework\I18n\ITranslator;
8
use PHPUnit\Framework\MockObject\MockBuilder;
9
use PHPUnit\Framework\MockObject\MockObject;
10
use PHPUnit\Framework\TestCase;
11
12
class MockTranslatorFactory
13
{
14
    /**
15
     * @param TestCase   $testCase
16
     * @param array|null $translations
17
     *
18
     * @return ITranslator|MockObject|null
19
     */
20
    public static function createSimpleTranslator(TestCase $testCase, ?array $translations)
21
    {
22
        if (null === $translations) {
23
            return null;
24
        }
25
26
        /** @var ITranslator|MockObject $translatorMock */
27
        $translatorMock = (new MockBuilder($testCase, ITranslator::class))
28
            ->disableOriginalConstructor()
29
            ->getMock();
30
31
        $translatorMock
32
            ->expects($testCase->any())
33
            ->method('translate')
34
            ->willReturnCallback(
35
                function ($key) use ($translations) {
36
                    if (array_key_exists($key, $translations)) {
37
                        return $translations[$key];
38
                    }
39
40
                    return $key;
41
                }
42
            );
43
44
        $translatorMock
45
            ->expects($testCase->any())
46
            ->method('canTranslate')
47
            ->willReturnCallback(
48
                function ($key) use ($translations) {
49
                    if (array_key_exists($key, $translations)) {
50
                        return true;
51
                    }
52
53
                    return false;
54
                }
55
            );
56
57
        return $translatorMock;
58
    }
59
}
60