Skip to content

Commit

Permalink
Split out base navigation menu class from main menu class
Browse files Browse the repository at this point in the history
  • Loading branch information
caendesilva committed Feb 22, 2024
1 parent ac4e689 commit 7f9b0c6
Show file tree
Hide file tree
Showing 10 changed files with 42 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use Hyde\Foundation\HydeKernel;
use Illuminate\Support\ServiceProvider;
use Hyde\Framework\Features\Navigation\NavigationMenu;
use Hyde\Framework\Features\Navigation\MainNavigationMenu;
use Hyde\Framework\Features\Navigation\NavigationManager;
use Hyde\Framework\Features\Navigation\DocumentationSidebar;
use Hyde\Framework\Features\Navigation\NavigationMenuGenerator;
Expand All @@ -22,7 +22,7 @@ public function register(): void
$this->app->alias(NavigationManager::class, 'navigation');

$this->app->make(HydeKernel::class)->booted(function () {
$this->app->make(NavigationManager::class)->registerMenu('main', NavigationMenuGenerator::handle(NavigationMenu::class));
$this->app->make(NavigationManager::class)->registerMenu('main', NavigationMenuGenerator::handle(MainNavigationMenu::class));
$this->app->make(NavigationManager::class)->registerMenu('sidebar', NavigationMenuGenerator::handle(DocumentationSidebar::class));
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
use Illuminate\Support\Collection;
use Illuminate\Support\Str;

/** @deprecated Use the new NavigationMenu class instead */
class DocumentationSidebar extends NavigationMenu
{
/** @var \Illuminate\Support\Collection<string, \Hyde\Framework\Features\Navigation\NavItem> */
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

declare(strict_types=1);

namespace Hyde\Framework\Features\Navigation;

class MainNavigationMenu extends NavigationMenu
{
//
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
* @example `$menu = app('navigation')->getMenu('main');` for the main navigation menu.
* @example `$menu = app('navigation')->getMenu('sidebar');` for the documentation sidebar.
*/
class NavigationMenu
abstract class NavigationMenu
{
/** @var \Illuminate\Support\Collection<\Hyde\Framework\Features\Navigation\NavItem> */
protected Collection $items;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class NavigationMenuGenerator
/** @param class-string<\Hyde\Framework\Features\Navigation\NavigationMenu> $menuType */
protected function __construct(string $menuType)
{
assert(in_array($menuType, [NavigationMenu::class, DocumentationSidebar::class]));
assert(in_array($menuType, [MainNavigationMenu::class, DocumentationSidebar::class]));

$this->menuType = $menuType;

Expand All @@ -55,7 +55,7 @@ protected function __construct(string $menuType)
}

/** @param class-string<\Hyde\Framework\Features\Navigation\NavigationMenu> $menuType */
public static function handle(string $menuType): NavigationMenu|DocumentationSidebar
public static function handle(string $menuType): MainNavigationMenu|DocumentationSidebar
{
$menu = new static($menuType);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
use Illuminate\Support\Collection;
use Hyde\Foundation\Kernel\RouteCollection;
use Hyde\Framework\Features\Navigation\NavItem;
use Hyde\Framework\Features\Navigation\NavigationMenu;
use Hyde\Framework\Features\Navigation\MainNavigationMenu;
use Hyde\Framework\Features\Navigation\DocumentationSidebar;
use Hyde\Framework\Features\Navigation\NavigationMenuGenerator;

Expand All @@ -28,7 +28,7 @@
* @covers \Hyde\Framework\Factories\NavigationDataFactory
* @covers \Hyde\Framework\Features\Navigation\NavigationMenuGenerator
* @covers \Hyde\Framework\Features\Navigation\DocumentationSidebar
* @covers \Hyde\Framework\Features\Navigation\NavigationMenu
* @covers \Hyde\Framework\Features\Navigation\MainNavigationMenu
* @covers \Hyde\Framework\Features\Navigation\NavItem
*/
class AutomaticNavigationConfigurationsTest extends TestCase
Expand Down Expand Up @@ -1298,7 +1298,7 @@ public function __construct(TestCase $test, $sidebar = false)
{
$this->items = $sidebar
? NavigationMenuGenerator::handle(DocumentationSidebar::class)->getItems()
: NavigationMenuGenerator::handle(NavigationMenu::class)->getItems();
: NavigationMenuGenerator::handle(MainNavigationMenu::class)->getItems();

$this->test = $test;
}
Expand Down
6 changes: 3 additions & 3 deletions packages/framework/tests/Feature/NavigationManagerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace Hyde\Framework\Testing\Feature;

use Hyde\Framework\Features\Navigation\NavigationManager;
use Hyde\Framework\Features\Navigation\NavigationMenu;
use Hyde\Framework\Features\Navigation\MainNavigationMenu;
use Hyde\Testing\TestCase;

/**
Expand All @@ -17,7 +17,7 @@ public function testCanRegisterMenu()
{
$manager = new NavigationManager();

$menu = $this->createMock(NavigationMenu::class);
$menu = $this->createMock(MainNavigationMenu::class);
$manager->registerMenu('foo', $menu);

$reflection = new \ReflectionClass($manager);
Expand All @@ -33,7 +33,7 @@ public function testCanGetMenu()
{
$manager = new NavigationManager();

$menu = $this->createMock(NavigationMenu::class);
$menu = $this->createMock(MainNavigationMenu::class);
$manager->registerMenu('foo', $menu);

$retrievedMenu = $manager->getMenu('foo');
Expand Down
10 changes: 5 additions & 5 deletions packages/framework/tests/Feature/NavigationMenuTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
use Hyde\Support\Models\Route;
use Hyde\Foundation\Facades\Routes;
use Hyde\Support\Models\ExternalRoute;
use Hyde\Framework\Features\Navigation\NavigationMenu;
use Hyde\Framework\Features\Navigation\MainNavigationMenu;
use Hyde\Framework\Features\Navigation\NavItem;
use Hyde\Pages\MarkdownPage;
use Hyde\Testing\TestCase;
use Illuminate\Support\Collection;
use Hyde\Framework\Features\Navigation\NavigationMenuGenerator;

/**
* @covers \Hyde\Framework\Features\Navigation\NavigationMenu
* @covers \Hyde\Framework\Features\Navigation\MainNavigationMenu
* @covers \Hyde\Framework\Features\Navigation\NavigationMenuGenerator
*
* @see \Hyde\Framework\Testing\Unit\NavigationMenuUnitTest
Expand All @@ -24,7 +24,7 @@ class NavigationMenuTest extends TestCase
{
public function testConstructor()
{
$this->assertInstanceOf(NavigationMenu::class, $this->createNavigationMenu());
$this->assertInstanceOf(MainNavigationMenu::class, $this->createNavigationMenu());
}

public function testGenerateMethodCreatesCollectionOfNavItems()
Expand Down Expand Up @@ -269,8 +269,8 @@ public function testCanAddItemsToMainNavigationMenuResolvedFromContainer()
$this->assertSame('Foo', $navigation->getItems()->last()->getLabel());
}

protected function createNavigationMenu(): NavigationMenu
protected function createNavigationMenu(): MainNavigationMenu
{
return NavigationMenuGenerator::handle(NavigationMenu::class);
return NavigationMenuGenerator::handle(MainNavigationMenu::class);
}
}
28 changes: 14 additions & 14 deletions packages/framework/tests/Unit/NavigationMenuUnitTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,67 +8,67 @@
use Illuminate\Support\Collection;
use Hyde\Support\Models\ExternalRoute;
use Hyde\Framework\Features\Navigation\NavItem;
use Hyde\Framework\Features\Navigation\NavigationMenu;
use Hyde\Framework\Features\Navigation\MainNavigationMenu;

/**
* @covers \Hyde\Framework\Features\Navigation\NavigationMenu
* @covers \Hyde\Framework\Features\Navigation\MainNavigationMenu
*
* @see \Hyde\Framework\Testing\Feature\NavigationMenuTest
*/
class NavigationMenuUnitTest extends UnitTestCase
{
public function testCanConstruct()
{
$this->assertInstanceOf(NavigationMenu::class, new NavigationMenu());
$this->assertInstanceOf(MainNavigationMenu::class, new MainNavigationMenu());
}

public function testCanConstructWithItemsArray()
{
$this->assertInstanceOf(NavigationMenu::class, new NavigationMenu($this->getItems()));
$this->assertInstanceOf(MainNavigationMenu::class, new MainNavigationMenu($this->getItems()));
}

public function testCanConstructWithItemsArrayable()
{
$this->assertInstanceOf(NavigationMenu::class, new NavigationMenu(collect($this->getItems())));
$this->assertInstanceOf(MainNavigationMenu::class, new MainNavigationMenu(collect($this->getItems())));
}

public function testGetItemsReturnsCollection()
{
$this->assertInstanceOf(Collection::class, (new NavigationMenu())->getItems());
$this->assertInstanceOf(Collection::class, (new MainNavigationMenu())->getItems());
}

public function testGetItemsReturnsCollectionWhenSuppliedArray()
{
$this->assertInstanceOf(Collection::class, (new NavigationMenu($this->getItems()))->getItems());
$this->assertInstanceOf(Collection::class, (new MainNavigationMenu($this->getItems()))->getItems());
}

public function testGetItemsReturnsCollectionWhenSuppliedArrayable()
{
$this->assertInstanceOf(Collection::class, (new NavigationMenu(collect($this->getItems())))->getItems());
$this->assertInstanceOf(Collection::class, (new MainNavigationMenu(collect($this->getItems())))->getItems());
}

public function testGetItemsReturnsItems()
{
$items = $this->getItems();

$this->assertSame($items, (new NavigationMenu($items))->getItems()->all());
$this->assertSame($items, (new MainNavigationMenu($items))->getItems()->all());
}

public function testGetItemsReturnsItemsWhenSuppliedArrayable()
{
$items = $this->getItems();

$this->assertSame($items, (new NavigationMenu(collect($items)))->getItems()->all());
$this->assertSame($items, (new MainNavigationMenu(collect($items)))->getItems()->all());
}

public function testGetItemsReturnsEmptyArrayWhenNoItems()
{
$this->assertSame([], (new NavigationMenu())->getItems()->all());
$this->assertSame([], (new MainNavigationMenu())->getItems()->all());
}

public function testCanAddItems()
{
$menu = new NavigationMenu();
$menu = new MainNavigationMenu();
$item = new NavItem(new ExternalRoute('/'), 'Home');

$menu->add($item);
Expand All @@ -79,7 +79,7 @@ public function testCanAddItems()

public function testItemsAreInTheOrderTheyWereAddedWhenThereAreNoCustomPriorities()
{
$menu = new NavigationMenu();
$menu = new MainNavigationMenu();
$item1 = new NavItem(new ExternalRoute('/'), 'Home');
$item2 = new NavItem(new ExternalRoute('/about'), 'About');
$item3 = new NavItem(new ExternalRoute('/contact'), 'Contact');
Expand All @@ -93,7 +93,7 @@ public function testItemsAreInTheOrderTheyWereAddedWhenThereAreNoCustomPrioritie

public function testItemsAreSortedByPriority()
{
$menu = new NavigationMenu();
$menu = new MainNavigationMenu();
$item1 = new NavItem(new ExternalRoute('/'), 'Home', 100);
$item2 = new NavItem(new ExternalRoute('/about'), 'About', 200);
$item3 = new NavItem(new ExternalRoute('/contact'), 'Contact', 300);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Hyde\Framework\Testing\Unit\Views;

use Hyde\Framework\Features\Navigation\NavigationMenu;
use Hyde\Framework\Features\Navigation\MainNavigationMenu;
use Hyde\Testing\TestCase;

/**
Expand All @@ -22,7 +22,7 @@ protected function setUp(): void
protected function render(): string
{
return view('hyde::components.navigation.navigation-brand', [
'navigation' => new NavigationMenu(),
'navigation' => new MainNavigationMenu(),
])->render();
}

Expand Down

0 comments on commit 7f9b0c6

Please sign in to comment.