From 193feff11a863ceed686e66b6a5e2ae74e845159 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 13 Feb 2024 15:49:25 +0100 Subject: [PATCH 0001/1422] Create NavigationMenus.php --- .../Framework/Features/Navigation/NavigationMenus.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 packages/framework/src/Framework/Features/Navigation/NavigationMenus.php diff --git a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php b/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php new file mode 100644 index 00000000000..851e36bc5d6 --- /dev/null +++ b/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php @@ -0,0 +1,10 @@ + Date: Tue, 13 Feb 2024 15:50:35 +0100 Subject: [PATCH 0002/1422] Create NavigationMenusTest.php --- .../tests/Feature/NavigationMenusTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/framework/tests/Feature/NavigationMenusTest.php diff --git a/packages/framework/tests/Feature/NavigationMenusTest.php b/packages/framework/tests/Feature/NavigationMenusTest.php new file mode 100644 index 00000000000..7ccd5d5973f --- /dev/null +++ b/packages/framework/tests/Feature/NavigationMenusTest.php @@ -0,0 +1,15 @@ + Date: Tue, 13 Feb 2024 15:49:44 +0100 Subject: [PATCH 0003/1422] Add PHPDoc --- .../src/Framework/Features/Navigation/NavigationMenus.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php b/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php index 851e36bc5d6..a04ccafb587 100644 --- a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php +++ b/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php @@ -4,6 +4,9 @@ namespace Hyde\Framework\Features\Navigation; +/** + * Interact with the navigation menus for the project. + */ class NavigationMenus { // From bd638057ab21f2b73f971ccf8eec6a91054d5213 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 13 Feb 2024 16:00:58 +0100 Subject: [PATCH 0004/1422] Add menus array to the new navigation menus class --- .../src/Framework/Features/Navigation/NavigationMenus.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php b/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php index a04ccafb587..53b36fceff1 100644 --- a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php +++ b/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php @@ -9,5 +9,10 @@ */ class NavigationMenus { - // + /** + * The menus that are available for the project, keyed by their name identifier. + * + * @var array + */ + protected array $menus = []; } From 6a318c3a6f0a8dfb5c9e8e28cc813477b37d9cf1 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 13 Feb 2024 16:03:11 +0100 Subject: [PATCH 0005/1422] Sketch out base contract --- .../Features/Navigation/NavigationMenus.php | 16 ++++++++++++++++ .../tests/Feature/NavigationMenusTest.php | 10 +++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php b/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php index 53b36fceff1..31ffdb366d4 100644 --- a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php +++ b/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php @@ -15,4 +15,20 @@ class NavigationMenus * @var array */ protected array $menus = []; + + /** + * Register a new menu for the project. + */ + public function registerMenu(string $name, BaseNavigationMenu $menu): void + { + $this->menus[$name] = $menu; + } + + /** + * Get a menu by its name. + */ + public function getMenu(string $name): BaseNavigationMenu + { + return $this->menus[$name]; + } } diff --git a/packages/framework/tests/Feature/NavigationMenusTest.php b/packages/framework/tests/Feature/NavigationMenusTest.php index 7ccd5d5973f..90612248389 100644 --- a/packages/framework/tests/Feature/NavigationMenusTest.php +++ b/packages/framework/tests/Feature/NavigationMenusTest.php @@ -11,5 +11,13 @@ */ class NavigationMenusTest extends TestCase { - // + public function testRegisterMenu() + { + // Todo + } + + public function testGetMenu() + { + // Todo + } } From 068df5fe966c231c4a5fc47da3884e71cc30ca6b Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 13 Feb 2024 17:04:53 +0100 Subject: [PATCH 0006/1422] Rename class to NavigationManager --- .../Navigation/{NavigationMenus.php => NavigationManager.php} | 2 +- .../{NavigationMenusTest.php => NavigationManagerTest.php} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename packages/framework/src/Framework/Features/Navigation/{NavigationMenus.php => NavigationManager.php} (96%) rename packages/framework/tests/Feature/{NavigationMenusTest.php => NavigationManagerTest.php} (69%) diff --git a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php b/packages/framework/src/Framework/Features/Navigation/NavigationManager.php similarity index 96% rename from packages/framework/src/Framework/Features/Navigation/NavigationMenus.php rename to packages/framework/src/Framework/Features/Navigation/NavigationManager.php index 31ffdb366d4..45485f32043 100644 --- a/packages/framework/src/Framework/Features/Navigation/NavigationMenus.php +++ b/packages/framework/src/Framework/Features/Navigation/NavigationManager.php @@ -7,7 +7,7 @@ /** * Interact with the navigation menus for the project. */ -class NavigationMenus +class NavigationManager { /** * The menus that are available for the project, keyed by their name identifier. diff --git a/packages/framework/tests/Feature/NavigationMenusTest.php b/packages/framework/tests/Feature/NavigationManagerTest.php similarity index 69% rename from packages/framework/tests/Feature/NavigationMenusTest.php rename to packages/framework/tests/Feature/NavigationManagerTest.php index 90612248389..09baf01df1e 100644 --- a/packages/framework/tests/Feature/NavigationMenusTest.php +++ b/packages/framework/tests/Feature/NavigationManagerTest.php @@ -7,9 +7,9 @@ use Hyde\Testing\TestCase; /** - * @covers \Hyde\Framework\Features\Navigation\NavigationMenus + * @covers \Hyde\Framework\Features\Navigation\NavigationManager */ -class NavigationMenusTest extends TestCase +class NavigationManagerTest extends TestCase { public function testRegisterMenu() { From 6064b5ddb468f832d000a497974682368fae2365 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 13 Feb 2024 17:05:13 +0100 Subject: [PATCH 0007/1422] Update PHPDoc for renamed class --- .../src/Framework/Features/Navigation/NavigationManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/framework/src/Framework/Features/Navigation/NavigationManager.php b/packages/framework/src/Framework/Features/Navigation/NavigationManager.php index 45485f32043..677a9264082 100644 --- a/packages/framework/src/Framework/Features/Navigation/NavigationManager.php +++ b/packages/framework/src/Framework/Features/Navigation/NavigationManager.php @@ -5,7 +5,7 @@ namespace Hyde\Framework\Features\Navigation; /** - * Interact with the navigation menus for the project. + * Manages the navigation menus for the project. */ class NavigationManager { From 79b82d506b129add9c28b36c96df48c950b8a499 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 13 Feb 2024 17:20:53 +0100 Subject: [PATCH 0008/1422] Copilot generate tests --- .../tests/Feature/NavigationManagerTest.php | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/packages/framework/tests/Feature/NavigationManagerTest.php b/packages/framework/tests/Feature/NavigationManagerTest.php index 09baf01df1e..9380eefd8f1 100644 --- a/packages/framework/tests/Feature/NavigationManagerTest.php +++ b/packages/framework/tests/Feature/NavigationManagerTest.php @@ -4,6 +4,8 @@ namespace Hyde\Framework\Testing\Feature; +use Hyde\Framework\Features\Navigation\NavigationManager; +use Hyde\Framework\Features\Navigation\BaseNavigationMenu; use Hyde\Testing\TestCase; /** @@ -11,13 +13,45 @@ */ class NavigationManagerTest extends TestCase { + protected NavigationManager $navigationManager; + + protected function setUp(): void + { + parent::setUp(); + $this->navigationManager = new NavigationManager(); + } + + /** @author Copilot */ public function testRegisterMenu() { - // Todo + $menu = $this->createMock(BaseNavigationMenu::class); + $this->navigationManager->registerMenu('test', $menu); + + $reflection = new \ReflectionClass($this->navigationManager); + $property = $reflection->getProperty('menus'); + $property->setAccessible(true); + + $menus = $property->getValue($this->navigationManager); + + $this->assertArrayHasKey('test', $menus); + $this->assertSame($menu, $menus['test']); } + /** @author Copilot */ public function testGetMenu() { - // Todo + $menu = $this->createMock(BaseNavigationMenu::class); + $this->navigationManager->registerMenu('test', $menu); + + $retrievedMenu = $this->navigationManager->getMenu('test'); + + $this->assertSame($menu, $retrievedMenu); + } + + /** @author Copilot */ + public function testGetMenuThrowsExceptionForNonExistentMenu() + { + $this->expectException(\Exception::class); + $this->navigationManager->getMenu('nonexistent'); } } From ae9859911e984bd28b30301481457bddd7dcdb3d Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 13 Feb 2024 17:25:16 +0100 Subject: [PATCH 0009/1422] Clean up generated test --- .../tests/Feature/NavigationManagerTest.php | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/packages/framework/tests/Feature/NavigationManagerTest.php b/packages/framework/tests/Feature/NavigationManagerTest.php index 9380eefd8f1..6b622349cb8 100644 --- a/packages/framework/tests/Feature/NavigationManagerTest.php +++ b/packages/framework/tests/Feature/NavigationManagerTest.php @@ -13,45 +13,39 @@ */ class NavigationManagerTest extends TestCase { - protected NavigationManager $navigationManager; - - protected function setUp(): void + public function testCanRegisterMenu() { - parent::setUp(); - $this->navigationManager = new NavigationManager(); - } + $manager = new NavigationManager(); - /** @author Copilot */ - public function testRegisterMenu() - { $menu = $this->createMock(BaseNavigationMenu::class); - $this->navigationManager->registerMenu('test', $menu); + $manager->registerMenu('foo', $menu); - $reflection = new \ReflectionClass($this->navigationManager); + $reflection = new \ReflectionClass($manager); $property = $reflection->getProperty('menus'); - $property->setAccessible(true); - $menus = $property->getValue($this->navigationManager); + $menus = $property->getValue($manager); - $this->assertArrayHasKey('test', $menus); - $this->assertSame($menu, $menus['test']); + $this->assertArrayHasKey('foo', $menus); + $this->assertSame($menu, $menus['foo']); } - /** @author Copilot */ - public function testGetMenu() + public function testCanGetMenu() { + $manager = new NavigationManager(); + $menu = $this->createMock(BaseNavigationMenu::class); - $this->navigationManager->registerMenu('test', $menu); + $manager->registerMenu('foo', $menu); - $retrievedMenu = $this->navigationManager->getMenu('test'); + $retrievedMenu = $manager->getMenu('foo'); $this->assertSame($menu, $retrievedMenu); } - /** @author Copilot */ public function testGetMenuThrowsExceptionForNonExistentMenu() { + $manager = new NavigationManager(); + $this->expectException(\Exception::class); - $this->navigationManager->getMenu('nonexistent'); + $manager->getMenu('foo'); } } From 7edcb821aecdb44ca858320fc3383c131f9b073d Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Tue, 13 Feb 2024 18:42:22 +0100 Subject: [PATCH 0010/1422] Breaking: Rename class `NavigationMenu` to `MainNavigationMenu` --- docs/digging-deeper/navigation.md | 4 +- .../views/layouts/navigation.blade.php | 2 +- ...igationMenu.php => MainNavigationMenu.php} | 2 +- .../Framework/Features/Navigation/NavItem.php | 2 +- ...enuTest.php => MainNavigationMenuTest.php} | 64 +++++++++---------- packages/framework/tests/Unit/NavItemTest.php | 2 +- .../Unit/Views/NavigationBrandViewTest.php | 4 +- 7 files changed, 40 insertions(+), 40 deletions(-) rename packages/framework/src/Framework/Features/Navigation/{NavigationMenu.php => MainNavigationMenu.php} (97%) rename packages/framework/tests/Feature/{NavigationMenuTest.php => MainNavigationMenuTest.php} (86%) diff --git a/docs/digging-deeper/navigation.md b/docs/digging-deeper/navigation.md index a9d865d45df..10d3ba73c90 100644 --- a/docs/digging-deeper/navigation.md +++ b/docs/digging-deeper/navigation.md @@ -296,11 +296,11 @@ For example: `_docs/getting-started/installation.md` will be placed in a group c While not required to know, you may find it interesting to learn more about how the navigation is handled internally. The best way to learn about this is to look at the source code, so here is a high-level overview with details on where to look in the source code. -The main navigation menu is the `NavigationMenu` class, and the documentation sidebar is the `DocumentationSidebar` class. +The main navigation menu is the `MainNavigationMenu` class, and the documentation sidebar is the `DocumentationSidebar` class. Both extend the same `BaseNavigationMenu` class: ```php -use Hyde\Framework\Features\Navigation\NavigationMenu; +use Hyde\Framework\Features\Navigation\MainNavigationMenu; use Hyde\Framework\Features\Navigation\DocumentationSidebar; use Hyde\Framework\Features\Navigation\BaseNavigationMenu; ``` diff --git a/packages/framework/resources/views/layouts/navigation.blade.php b/packages/framework/resources/views/layouts/navigation.blade.php index 17707d5e10a..3324c3a79f2 100644 --- a/packages/framework/resources/views/layouts/navigation.blade.php +++ b/packages/framework/resources/views/layouts/navigation.blade.php @@ -1,5 +1,5 @@ @php - $navigation = \Hyde\Framework\Features\Navigation\NavigationMenu::create(); + $navigation = \Hyde\Framework\Features\Navigation\MainNavigationMenu::create(); @endphp