- Ajout de jobs de lint, test, ci - Refactoring de code - montée de version sur laravel 13 uniquement et php8.5
72 lines
2.4 KiB
PHP
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');
|
|
});
|
|
});
|