mirror of
https://github.com/filamentphp/filament.git
synced 2026-09-21 05:20:26 +08:00
fix: preserve configuration context when mounting navigation (#20250)
* fix: preserve configuration context when mounting navigation * test: cover navigation mounting with active configurations * consistency and more tests --------- Co-authored-by: Dan Harrin <git@danharrin.com>
This commit is contained in:
@@ -28,6 +28,35 @@ describe('resource configuration navigation', function (): void {
|
||||
expect($urls)->toContain(ConfigurablePostResource::getUrl(configuration: 'archived'));
|
||||
});
|
||||
|
||||
it('registers separate navigation items for each resource configuration when one is active', function (): void {
|
||||
$defaultUrl = ConfigurablePostResource::getUrl();
|
||||
|
||||
ConfigurablePostResource::withConfiguration('featured', static function () use ($defaultUrl): void {
|
||||
$items = collect(Filament::getNavigation())
|
||||
->flatMap(static fn ($group) => $group->getItems())
|
||||
->filter(static fn (NavigationItem $item) => str_contains($item->getUrl(), 'posts'))
|
||||
->values();
|
||||
|
||||
expect($items)->toHaveCount(3);
|
||||
|
||||
$urls = $items->map(static fn (NavigationItem $item) => $item->getUrl())->all();
|
||||
|
||||
expect($urls)->toContain($defaultUrl);
|
||||
expect($urls)->toContain(ConfigurablePostResource::getUrl(configuration: 'featured'));
|
||||
expect($urls)->toContain(ConfigurablePostResource::getUrl(configuration: 'archived'));
|
||||
|
||||
expect(ConfigurablePostResource::getConfiguration()?->getKey())->toBe('featured');
|
||||
});
|
||||
});
|
||||
|
||||
it('preserves the active resource configuration key when mounting navigation', function (): void {
|
||||
Filament::forResourceConfiguration(ConfigurablePostResource::class, 'featured');
|
||||
|
||||
Filament::getNavigation();
|
||||
|
||||
expect(Filament::getCurrentResourceConfigurationKey())->toBe('featured');
|
||||
});
|
||||
|
||||
it('shows correct navigation labels for resource configurations', function (): void {
|
||||
$navigation = Filament::getNavigation();
|
||||
|
||||
@@ -84,6 +113,35 @@ describe('page configuration navigation', function (): void {
|
||||
expect($urls)->toContain(ConfigurableSettings::withConfiguration('advanced', fn () => ConfigurableSettings::getUrl()));
|
||||
});
|
||||
|
||||
it('registers separate navigation items for each page configuration when one is active', function (): void {
|
||||
$defaultUrl = ConfigurableSettings::getUrl();
|
||||
|
||||
ConfigurableSettings::withConfiguration('general', static function () use ($defaultUrl): void {
|
||||
$items = collect(Filament::getNavigation())
|
||||
->flatMap(static fn ($group) => $group->getItems())
|
||||
->filter(static fn (NavigationItem $item) => str_contains($item->getUrl(), 'settings'))
|
||||
->values();
|
||||
|
||||
expect($items)->toHaveCount(3);
|
||||
|
||||
$urls = $items->map(static fn (NavigationItem $item) => $item->getUrl())->all();
|
||||
|
||||
expect($urls)->toContain($defaultUrl);
|
||||
expect($urls)->toContain(ConfigurableSettings::getUrl(configuration: 'general'));
|
||||
expect($urls)->toContain(ConfigurableSettings::getUrl(configuration: 'advanced'));
|
||||
|
||||
expect(ConfigurableSettings::getConfiguration()?->getKey())->toBe('general');
|
||||
});
|
||||
});
|
||||
|
||||
it('preserves the active page configuration key when mounting navigation', function (): void {
|
||||
Filament::forPageConfiguration(ConfigurableSettings::class, 'general');
|
||||
|
||||
Filament::getNavigation();
|
||||
|
||||
expect(Filament::getCurrentPageConfigurationKey())->toBe('general');
|
||||
});
|
||||
|
||||
it('shows correct navigation labels for page configurations', function (): void {
|
||||
$navigation = Filament::getNavigation();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user