Passed
Push — bugfix/support-windows ( 0e99e7...b5ecf8 )
by Jesús
06:33 queued 02:55
created

MakeModuleCommandTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 22
c 0
b 0
f 0
dl 0
loc 44
rs 10
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A tearDownAfterClass() 0 3 1
A setUp() 0 4 1
A createModulesProvider() 0 4 1
A test_make_module() 0 22 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GacelaTest\Feature\Console\CodeGenerator;
6
7
use Gacela\Console\Infrastructure\ConsoleBootstrap;
8
use Gacela\Framework\Gacela;
9
use GacelaTest\Feature\Util\DirectoryUtil;
10
use PHPUnit\Framework\TestCase;
11
use Symfony\Component\Console\Input\StringInput;
12
use Symfony\Component\Console\Output\BufferedOutput;
13
14
final class MakeModuleCommandTest extends TestCase
15
{
16
    public static function tearDownAfterClass(): void
17
    {
18
        DirectoryUtil::removeDir('./data/TestModule');
19
    }
20
21
    public function setUp(): void
22
    {
23
        Gacela::bootstrap(__DIR__);
24
        DirectoryUtil::removeDir('./data/TestModule');
25
    }
26
27
    /**
28
     * @dataProvider createModulesProvider
29
     */
30
    public function test_make_module(string $fileName, string $shortName): void
31
    {
32
        $input = new StringInput("make:module Psr4CodeGeneratorData/TestModule {$shortName}");
33
        $output = new BufferedOutput();
34
35
        $bootstrap = new ConsoleBootstrap();
36
        $bootstrap->setAutoExit(false);
37
        $bootstrap->run($input, $output);
38
39
        $expectedOutput = <<<OUT
40
> Path 'data/TestModule/{$fileName}Facade.php' created successfully
41
> Path 'data/TestModule/{$fileName}Factory.php' created successfully
42
> Path 'data/TestModule/{$fileName}Config.php' created successfully
43
> Path 'data/TestModule/{$fileName}DependencyProvider.php' created successfully
44
Module 'TestModule' created successfully
45
OUT;
46
        self::assertSame($expectedOutput, trim($output->fetch()));
47
48
        self::assertFileExists("./data/TestModule/{$fileName}Facade.php");
49
        self::assertFileExists("./data/TestModule/{$fileName}Factory.php");
50
        self::assertFileExists("./data/TestModule/{$fileName}Config.php");
51
        self::assertFileExists("./data/TestModule/{$fileName}DependencyProvider.php");
52
    }
53
54
    public function createModulesProvider(): iterable
55
    {
56
        yield 'module' => ['TestModule', ''];
57
        yield 'module -s' => ['', '-s'];
58
    }
59
}
60