Passed
Push — improve-list-modules-output ( e63970 )
by Chema
04:12
created

ListModulesCommandTest::commandInputProvider()   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\Feature\Console\ListModules;
6
7
use Gacela\Console\Infrastructure\ConsoleBootstrap;
8
use Gacela\Framework\Bootstrap\GacelaConfig;
9
use Gacela\Framework\Gacela;
10
use PHPUnit\Framework\TestCase;
11
use Symfony\Component\Console\Input\StringInput;
12
use Symfony\Component\Console\Output\BufferedOutput;
13
14
final class ListModulesCommandTest extends TestCase
15
{
16
    public function test_list_modules(): void
17
    {
18
        Gacela::bootstrap(__DIR__, static function (GacelaConfig $config): void {
19
            $config->resetInMemoryCache();
20
        });
21
22
        $input = new StringInput('list:modules');
23
        $output = new BufferedOutput();
24
25
        $bootstrap = new ConsoleBootstrap();
26
        $bootstrap->setAutoExit(false);
27
        $bootstrap->run($input, $output);
28
29
        $expected = <<<TXT
30
==============
31
TestModule3
32
--------------
33
Facade: GacelaTest\Feature\Console\ListModules\LevelUp\TestModule3\TestModule3Facade
34
Factory: GacelaTest\Feature\Console\ListModules\LevelUp\TestModule3\TestModule3Factory
35
Config: GacelaTest\Feature\Console\ListModules\LevelUp\TestModule3\TestModule3Config
36
DependencyProvider: None
37
==============
38
TestModule1
39
--------------
40
Facade: GacelaTest\Feature\Console\ListModules\TestModule1\TestModule1Facade
41
Factory: GacelaTest\Feature\Console\ListModules\TestModule1\TestModule1Factory
42
Config: None
43
DependencyProvider: GacelaTest\Feature\Console\ListModules\TestModule1\TestModule1DependencyProvider
44
==============
45
TestModule2
46
--------------
47
Facade: GacelaTest\Feature\Console\ListModules\TestModule2\TestModule2Facade
48
Factory: None
49
Config: None
50
DependencyProvider: None
51
52
53
TXT;
54
        self::assertSame($expected, $output->fetch());
55
    }
56
57
    /**
58
     * @dataProvider commandInputProvider
59
     */
60
    public function test_list_modules_with_filter(string $input): void
61
    {
62
        Gacela::bootstrap(__DIR__);
63
64
        $input = new StringInput('list:modules ' . $input);
65
        $output = new BufferedOutput();
66
67
        $bootstrap = new ConsoleBootstrap();
68
        $bootstrap->setAutoExit(false);
69
        $bootstrap->run($input, $output);
70
71
        $out = $output->fetch();
72
73
        self::assertStringContainsString('TestModule1', $out);
74
        self::assertStringNotContainsString('TestModule2', $out);
75
        self::assertStringNotContainsString('TestModule3', $out);
76
        self::assertStringNotContainsString('vendor', $out);
77
        self::assertStringNotContainsString('ToBeIgnored', $out);
78
    }
79
80
    public function commandInputProvider(): iterable
81
    {
82
        yield 'slashes' => ['ListModules/TestModule1'];
83
        yield 'backward slashes' => ['ListModules\\\TestModule1'];
84
    }
85
}
86