Skip to content

Commit 4f145c1

Browse files
committed
Add test for command registration
1 parent 53149ef commit 4f145c1

File tree

3 files changed

+72
-1
lines changed

3 files changed

+72
-1
lines changed

tests/Feature/Commands/DockerGenerateCommandTest.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use BlameButton\LaravelDockerBuilder\Integrations\SupportedPhpExtensions;
66
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
7+
use Illuminate\Contracts\Console\Kernel;
78
use Mockery\MockInterface;
89

910
/**
@@ -112,4 +113,38 @@ public function testItAsksQuestions(): void
112113
$command->expectsOutput('Command to generate above configuration:');
113114
$command->expectsOutput(' php artisan docker:generate -n -p 8.2 -e bcmath,redis -o -a -m npm -b vite');
114115
}
116+
117+
public function provideInvalidOptions(): array
118+
{
119+
return [
120+
'php version' => [
121+
"Invalid value [unsupported] for option [php-version]",
122+
'docker:generate -n -p unsupported -e bcmath -o -a -m npm -b vite',
123+
],
124+
'php extensions' => [
125+
"Extension [unsupported] is not supported.",
126+
'docker:generate -n -p 8.2 -e bcmath,unsupported -o -a -m npm -b vite',
127+
],
128+
'node package manager' => [
129+
"Invalid value [unsupported] for option [node-package-manager]",
130+
'docker:generate -n -p 8.2 -e bcmath -o -a -m unsupported -b vite',
131+
],
132+
'node build tool' => [
133+
"Invalid value [unsupported] for option [node-build-tool]",
134+
'docker:generate -n -p 8.2 -e bcmath -o -a -m npm -b unsupported',
135+
],
136+
];
137+
}
138+
139+
/** @dataProvider provideInvalidOptions */
140+
public function testItThrowsExceptions(string $expected, string $command): void
141+
{
142+
$this->mock(SupportedPhpExtensions::class, function (MockInterface $mock) {
143+
$mock->shouldReceive('get')->withAnyArgs()->andReturn(['bcmath']);
144+
});
145+
146+
$command = $this->artisan($command);
147+
$command->expectsOutput($expected);
148+
$command->assertFailed();
149+
}
115150
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
namespace BlameButton\LaravelDockerBuilder\Tests\Unit;
4+
5+
use BlameButton\LaravelDockerBuilder\Commands\DockerGenerateCommand;
6+
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpVersion;
7+
use BlameButton\LaravelDockerBuilder\Integrations\SupportedPhpExtensions;
8+
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
9+
use Illuminate\Contracts\Console\Kernel;
10+
use Mockery\MockInterface;
11+
12+
/**
13+
* @uses \BlameButton\LaravelDockerBuilder\Commands\DockerGenerateCommand::getOptions()
14+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpVersion
15+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpExtensions
16+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodePackageManager
17+
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodeBuildTool
18+
*
19+
* @covers \BlameButton\LaravelDockerBuilder\DockerServiceProvider
20+
*/
21+
class DockerServiceProviderTest extends TestCase
22+
{
23+
public function testItRegistersCommands(): void
24+
{
25+
$this->partialMock(SupportedPhpExtensions::class, function (MockInterface $mock) {
26+
$mock->shouldReceive('get')->once()->andReturn([]);
27+
});
28+
29+
$commands = app(Kernel::class)->all();
30+
31+
self::assertArrayHasKey('docker:build', $commands);
32+
self::assertArrayHasKey('docker:ci', $commands);
33+
self::assertArrayHasKey('docker:generate', $commands);
34+
self::assertArrayHasKey('docker:push', $commands);
35+
}
36+
}

tests/Unit/InteractsWithTwigTest.php renamed to tests/Unit/Traits/InteractsWithTwigTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace BlameButton\LaravelDockerBuilder\Tests\Unit;
3+
namespace BlameButton\LaravelDockerBuilder\Tests\Unit\Traits;
44

55
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
66
use BlameButton\LaravelDockerBuilder\Traits\InteractsWithTwig;

0 commit comments

Comments
 (0)