Passed
Push — main ( ce5419...4c5dd6 )
by Chema
13:55
created

test_facade_or_factory_problem()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Unit\Console\Domain\FilenameSanitizer;
6
7
use Gacela\Console\Domain\FilenameSanitizer\FilenameSanitizer;
8
use PHPUnit\Framework\TestCase;
9
10
final class FilenameSanitizerTest extends TestCase
11
{
12
    private FilenameSanitizer $filenameSanitizer;
13
14
    protected function setUp(): void
15
    {
16
        $this->filenameSanitizer = new FilenameSanitizer();
17
    }
18
19
    public function test_expected_filenames(): void
20
    {
21
        $actual = implode(', ', $this->filenameSanitizer->getExpectedFilenames());
22
23
        self::assertSame('Facade, Factory, Config, DependencyProvider', $actual);
24
    }
25
26
    public function test_facade_or_factory_problem(): void
27
    {
28
        $this->expectExceptionMessage('When using "fac", which filename do you mean [Facade or Factory]?');
29
        $this->filenameSanitizer->sanitize('fac');
30
    }
31
32
    /**
33
     * @dataProvider providerFacade
34
     */
35
    public function test_facade(string $filename): void
36
    {
37
        self::assertSame(
38
            FilenameSanitizer::FACADE,
39
            $this->filenameSanitizer->sanitize($filename),
40
        );
41
    }
42
43
    public function providerFacade(): iterable
44
    {
45
        yield ['faca'];
46
        yield ['facad'];
47
        yield ['facade'];
48
        yield ['Facade'];
49
        yield ['cade'];
50
    }
51
52
    /**
53
     * @dataProvider providerFactory
54
     */
55
    public function test_factory(string $filename): void
56
    {
57
        self::assertSame(
58
            FilenameSanitizer::FACTORY,
59
            $this->filenameSanitizer->sanitize($filename),
60
        );
61
    }
62
63
    public function providerFactory(): iterable
64
    {
65
        yield ['fact'];
66
        yield ['facto'];
67
        yield ['factor'];
68
        yield ['factory'];
69
        yield ['Factory'];
70
        yield ['tory'];
71
    }
72
73
    /**
74
     * @dataProvider providerConfig
75
     */
76
    public function test_config(string $filename): void
77
    {
78
        self::assertSame(
79
            FilenameSanitizer::CONFIG,
80
            $this->filenameSanitizer->sanitize($filename),
81
        );
82
    }
83
84
    public function providerConfig(): iterable
85
    {
86
        yield ['conf'];
87
        yield ['confi'];
88
        yield ['config'];
89
        yield ['Config'];
90
        yield ['fig'];
91
    }
92
93
    /**
94
     * @dataProvider providerDependencyProvider
95
     */
96
    public function test_dependency_provider(string $filename): void
97
    {
98
        self::assertSame(
99
            FilenameSanitizer::DEPENDENCY_PROVIDER,
100
            $this->filenameSanitizer->sanitize($filename),
101
        );
102
    }
103
104
    public function providerDependencyProvider(): iterable
105
    {
106
        yield ['depe'];
107
        yield ['dependency'];
108
        yield ['pro'];
109
        yield ['provider'];
110
        yield ['de-pr'];
111
        yield ['dependencyprovider'];
112
        yield ['dependency-provider'];
113
    }
114
}
115