Files
hr/tests/Feature/LocalizationTest.php
2026-07-31 18:08:08 +05:00

62 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
use App\Enums\Gender;
use App\Enums\NavigationGroup;
use App\Filament\Resources\ActivityLogs\ActivityLogResource;
use App\Models\User;
use BezhanSalleh\LanguageSwitch\Events\LocaleChanged;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Event;
it('returns translated enum labels for the active locale', function (): void {
App::setLocale('ru');
expect(Gender::Male->label())->toBe('Мужской');
App::setLocale('tk');
expect(Gender::Male->label())->toBe('Erkek');
App::setLocale('en');
expect(Gender::Male->label())->toBe('Male');
});
it('returns translated navigation group labels', function (): void {
App::setLocale('ru');
expect(NavigationGroup::Employees->getLabel())->toBe('Сотрудники');
App::setLocale('tk');
expect(NavigationGroup::LeaveManagement->getLabel())->toBe('Dynç alyş dolandyryşy');
});
it('returns translated filament resource navigation labels', function (): void {
App::setLocale('tk');
expect(ActivityLogResource::getNavigationLabel())->toBe('Audit žurnaly');
App::setLocale('ru');
expect(ActivityLogResource::getNavigationLabel())->toBe('Журнал аудита');
});
it('persists locale when locale changed event fires', function (): void {
$user = User::factory()->create(['locale' => 'en']);
$this->actingAs($user);
Event::dispatch(new LocaleChanged('ru'));
expect($user->fresh()->locale)->toBe('ru');
});
it('defaults new users to english locale', function (): void {
$user = User::factory()->create();
expect($user->locale)->toBe('en');
});