From 3cdbeda805f34143e482dc896109056ac97ac8b7 Mon Sep 17 00:00:00 2001 From: Mekan1206 Date: Sun, 2 Aug 2026 22:42:54 +0500 Subject: [PATCH] Enhance AuditLogResource by adding getNavigationItems method to categorize navigation items under the System group. Remove unused Auth facade import in AppServiceProvider and clean up navigation group assignment in AdminPanelProvider for improved clarity and organization. --- .../ActivityTimeline/AuditLogResource.php | 13 +++++++ app/Providers/AppServiceProvider.php | 1 - app/Providers/Filament/AdminPanelProvider.php | 1 - .../Filament/AuditLogNavigationTest.php | 37 +++++++++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 tests/Feature/Filament/AuditLogNavigationTest.php diff --git a/app/Filament/ActivityTimeline/AuditLogResource.php b/app/Filament/ActivityTimeline/AuditLogResource.php index fd78bcf..5b9a7ca 100644 --- a/app/Filament/ActivityTimeline/AuditLogResource.php +++ b/app/Filament/ActivityTimeline/AuditLogResource.php @@ -4,8 +4,10 @@ declare(strict_types=1); namespace App\Filament\ActivityTimeline; +use App\Enums\NavigationGroup; use App\Filament\Concerns\HasHrResourceLabels; use BokshornIt\FilamentActivityTimeline\Resources\ActivityResource; +use Filament\Navigation\NavigationItem; class AuditLogResource extends ActivityResource { @@ -21,4 +23,15 @@ class AuditLogResource extends ActivityResource 'navigation' => 'audit_log', ]; } + + /** + * @return array + */ + public static function getNavigationItems(): array + { + return array_map( + fn (NavigationItem $item): NavigationItem => $item->group(NavigationGroup::System), + parent::getNavigationItems(), + ); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index f4e1d06..79224fc 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -38,7 +38,6 @@ use App\Policies\UserPolicy; use App\Policies\VacationPolicy; use BezhanSalleh\LanguageSwitch\Events\LocaleChanged; use BezhanSalleh\LanguageSwitch\LanguageSwitch; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Gate; use Illuminate\Support\ServiceProvider; diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 93e7a53..d2971fa 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -63,7 +63,6 @@ class AdminPanelProvider extends PanelProvider ->navigationGroup(NavigationGroupEnum::System), ActivityTimelinePlugin::make() ->resource(AuditLogResource::class) - ->navigationGroup(fn (): string => NavigationGroupEnum::System->getLabel()) ->navigationIcon('heroicon-o-clipboard-document-list') ->navigationSort(3) ->causerIcons([ diff --git a/tests/Feature/Filament/AuditLogNavigationTest.php b/tests/Feature/Filament/AuditLogNavigationTest.php new file mode 100644 index 0000000..ed50540 --- /dev/null +++ b/tests/Feature/Filament/AuditLogNavigationTest.php @@ -0,0 +1,37 @@ + 'tk']); + + $this->actingAs($admin); + app()->setLocale('tk'); + Filament::setCurrentPanel(Filament::getPanel('admin')); + + $response = $this->get('/admin'); + $response->assertSuccessful(); + + $auditLabel = 'Audit žurnaly'; + $occurrences = substr_count($response->getContent(), $auditLabel); + + $nm = app(NavigationManager::class); + $nav = $nm->get(); + + $systemGroups = collect($nav)->filter( + fn ($group): bool => $group->getLabel() === __('hr.navigation.system'), + ); + + $auditNavItems = $systemGroups->flatMap( + fn ($group) => $group->getItems()->filter( + fn ($item): bool => $item->getLabel() === $auditLabel, + ), + ); + + expect($occurrences)->toBe(1) + ->and($systemGroups->count())->toBe(1) + ->and($auditNavItems->count())->toBe(1); +});