### Changes

Fixes #3: Error on DBI when files or folders contains special characters.

### Additional changes
* Added unit and feature tests
* Fix file size display
* Run tests on CI/CD
* Publish docker image on release
This commit is contained in:
Fabián Gonzalo Artur de la Villarmois
2026-03-29 17:35:32 +13:00
parent 15b9c17b99
commit 0993bfa666
15 changed files with 487 additions and 18 deletions
@@ -0,0 +1,29 @@
<?php
use App\Enums\NintendoFileExtension;
test('values() returns all four supported extensions', function () {
expect(NintendoFileExtension::values())->toBe(['nsp', 'nsz', 'xci', 'xcz']);
});
test('isSupported() returns true for each supported extension', function (string $filename) {
expect(NintendoFileExtension::isSupported($filename))->toBeTrue();
})->with(['game.nsp', 'game.nsz', 'game.xci', 'game.xcz']);
test('isSupported() is case-insensitive', function (string $filename) {
expect(NintendoFileExtension::isSupported($filename))->toBeTrue();
})->with(['game.NSP', 'game.NSZ', 'game.XCI', 'game.XCZ', 'game.Nsp', 'game.Xci']);
test('isSupported() returns false for unsupported extensions', function (string $filename) {
expect(NintendoFileExtension::isSupported($filename))->toBeFalse();
})->with(['game.txt', 'game.exe', 'game.zip', 'game.iso', 'game.php', 'game.rom']);
test('isSupported() returns false for files without an extension', function () {
expect(NintendoFileExtension::isSupported('gamefile'))->toBeFalse();
});
test('isSupported() works with paths containing directory separators', function () {
expect(NintendoFileExtension::isSupported('folder/game.nsp'))->toBeTrue();
expect(NintendoFileExtension::isSupported('folder/sub/game.xci'))->toBeTrue();
expect(NintendoFileExtension::isSupported('folder/game.txt'))->toBeFalse();
});