Skip to content

Commit 772648a

Browse files
committed
Add tests
1 parent 6688678 commit 772648a

15 files changed

+170
-27
lines changed

src/Commands/GenerateQuestions/Choices/NodeBuildTool.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static function name(string $value): string
2020
{
2121
return match ($value) {
2222
self::VITE => 'Vite.js',
23-
self::MIX => 'Laravel mix',
23+
self::MIX => 'Laravel Mix',
2424
};
2525
}
2626
}

src/Commands/GenerateQuestions/Choices/PhpExtensions.php

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,12 @@
22

33
namespace BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices;
44

5+
use BlameButton\LaravelDockerBuilder\Integrations\SupportedPhpExtensions;
6+
57
class PhpExtensions
68
{
7-
private const SUPPORTED_EXTENSIONS = 'https://github.com/mlocati/docker-php-extension-installer/raw/master/data/supported-extensions';
8-
9-
private static array|null $cache = null;
10-
119
public static function values(string $phpVersion = null): array
1210
{
13-
if (! is_null(self::$cache)) {
14-
return self::$cache;
15-
}
16-
17-
try {
18-
$contents = file_get_contents(self::SUPPORTED_EXTENSIONS);
19-
20-
return self::$cache = str($contents)
21-
->explode("\n")
22-
->filter(fn (string $extension): bool => is_null($phpVersion) || str($extension)->contains($phpVersion))
23-
->map(fn (string $extension): string => str($extension)->trim()->before(' '))
24-
->filter()
25-
->toArray();
26-
} catch (\ErrorException) {
27-
return [];
28-
}
11+
return app(SupportedPhpExtensions::class)->fetch($phpVersion);
2912
}
3013
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace BlameButton\LaravelDockerBuilder\Integrations;
4+
5+
class SupportedPhpExtensions
6+
{
7+
private const URL = 'https://github.com/mlocati/docker-php-extension-installer/raw/master/data/supported-extensions';
8+
9+
private array|null $cache = null;
10+
11+
public function fetch(string $phpVersion = null): array
12+
{
13+
if (! is_null($this->cache)) {
14+
return $this->cache;
15+
}
16+
17+
try {
18+
$contents = file_get_contents(self::URL);
19+
20+
return $this->cache = str($contents)
21+
->explode("\n")
22+
->filter(fn (string $extension): bool => is_null($phpVersion) || str($extension)->contains($phpVersion))
23+
->map(fn (string $extension): string => str($extension)->trim()->before(' '))
24+
->filter()
25+
->toArray();
26+
} catch (\ErrorException) {
27+
return [];
28+
}
29+
}
30+
}

tests/Commands/BaseDockerCommandTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Symfony\Component\Process\Process;
99

1010
/**
11-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
11+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
1212
*
1313
* @covers \BlameButton\LaravelDockerBuilder\Commands\BaseDockerCommand
1414
*/

tests/Commands/DockerBuildCommandTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Symfony\Component\Process\Process;
88

99
/**
10-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
10+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
1111
* @uses package_path()
1212
*
1313
* @covers \BlameButton\LaravelDockerBuilder\Commands\DockerBuildCommand

tests/Commands/DockerPushCommandTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use Symfony\Component\Process\Process;
88

99
/**
10-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
10+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
1111
* @uses package_path()
1212
*
1313
* @covers \BlameButton\LaravelDockerBuilder\Commands\DockerPushCommand

tests/Commands/GenerateQuestions/ArtisanOptimizeQuestionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
88

99
/**
10-
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider
10+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
1111
* @uses \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\ArtisanOptimize
1212
*
1313
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\ArtisanOptimizeQuestion
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace BlameButton\LaravelDockerBuilder\Tests\Commands\GenerateQuestions\Choices;
4+
5+
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\ArtisanOptimize;
6+
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
7+
8+
/**
9+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
10+
*
11+
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\ArtisanOptimize
12+
*/
13+
class ArtisanOptimizeTest extends TestCase
14+
{
15+
public function testItReturnsCorrectlyOrderedValues(): void
16+
{
17+
self::assertEquals(['yes', 'no'], ArtisanOptimize::values());
18+
}
19+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace BlameButton\LaravelDockerBuilder\Tests\Commands\GenerateQuestions\Choices;
4+
5+
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodeBuildTool;
6+
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
7+
8+
/**
9+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
10+
*
11+
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodeBuildTool
12+
*/
13+
class NodeBuildToolTest extends TestCase
14+
{
15+
public function testItReturnsCorrectlyOrderedValues(): void
16+
{
17+
self::assertEquals(['vite', 'mix'], NodeBuildTool::values());
18+
}
19+
20+
public function testItReturnsCorrectNames(): void
21+
{
22+
self::assertEquals('Vite.js', NodeBuildTool::name(NodeBuildTool::VITE));
23+
self::assertEquals('Laravel Mix', NodeBuildTool::name(NodeBuildTool::MIX));
24+
}
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace BlameButton\LaravelDockerBuilder\Tests\Commands\GenerateQuestions\Choices;
4+
5+
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodePackageManager;
6+
use BlameButton\LaravelDockerBuilder\Tests\TestCase;
7+
8+
/**
9+
* @uses \BlameButton\LaravelDockerBuilder\DockerServiceProvider::boot()
10+
*
11+
* @covers \BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodePackageManager
12+
*/
13+
class NodePackageManagerTest extends TestCase
14+
{
15+
public function testItReturnsCorrectlyOrderedValues(): void
16+
{
17+
self::assertEquals(['npm', 'yarn'], NodePackageManager::values());
18+
}
19+
20+
public function testItReturnsCorrectNames(): void
21+
{
22+
self::assertEquals('NPM', NodePackageManager::name(NodePackageManager::NPM));
23+
self::assertEquals('Yarn', NodePackageManager::name(NodePackageManager::YARN));
24+
}
25+
}

0 commit comments

Comments
 (0)