ldc-sitemap-generator/tests/Unit/Localizers/McamaraRouteLocalizerTest.php
Jérémy Munsch 4e8c58d5f9
refactor: refactoring et ajout de tests, la dependance pour traduire les routes est vraiment optionnelle.
- Ajout de jobs de lint, test, ci
- Refactoring de code
- montée de version sur laravel 13 uniquement et php8.5
2026-10-15 10:18:25 +02:00

72 lines
2.4 KiB
PHP

<?php
declare(strict_types=1);
namespace Uwil\SitemapGenerator\Tests\Unit\Localizers;
use Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider;
use Uwil\SitemapGenerator\Localizers\McamaraRouteLocalizer;
use Illuminate\Translation\Translator;
covers(McamaraRouteLocalizer::class);
describe('McamaraRouteLocalizer', function () {
it('canBeUsed returns false when laravellocalization is not bound', function () {
// GIVEN
$translator = app()->make(Translator::class);
$localizer = new McamaraRouteLocalizer($translator);
// WHEN
$canBeUsed = $localizer->canBeUsed();
// THEN
expect($canBeUsed)->toBeFalse();
});
it('canBeUsed returns true when laravellocalization is bound', function () {
// GIVEN
app()->register(LaravelLocalizationServiceProvider::class);
$translator = app()->make(Translator::class);
$localizer = new McamaraRouteLocalizer($translator);
// WHEN
$canBeUsed = $localizer->canBeUsed();
// THEN
expect($canBeUsed)->toBeTrue();
});
it('returns null when translation does not exist', function () {
// GIVEN
app()->register(LaravelLocalizationServiceProvider::class);
$translator = app()->make(Translator::class);
$localizer = new McamaraRouteLocalizer($translator);
// WHEN
$url = $localizer->getLocalizedUrl('fr', 'unknown-route');
// THEN
expect($url)->toBeNull();
});
it('returns localized url when translation exists', function () {
// GIVEN
app()->register(LaravelLocalizationServiceProvider::class);
config()->set('laravellocalization.supportedLocales', [
'en' => ['name' => 'English', 'script' => 'Latn', 'native' => 'English'],
'fr' => ['name' => 'French', 'script' => 'Latn', 'native' => 'Français'],
]);
config()->set('laravellocalization.hideDefaultLocaleInURL', false);
app('translator')->addLines(['routes.contact' => 'contact-fr'], 'fr');
$translator = app()->make(Translator::class);
$localizer = new McamaraRouteLocalizer($translator);
// WHEN
$url = $localizer->getLocalizedUrl('fr', 'contact');
// THEN
expect($url)->not->toBeNull()
->and((string) $url)->toBe('http://localhost/fr/contact-fr');
});
});