Skip to content

Commit 53cc222

Browse files
authored
Merge pull request #1603 from hydephp/improved-view-testing
Add more view tests for the navigation menu
2 parents ca0bdfa + 101d388 commit 53cc222

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

packages/framework/tests/Unit/Views/NavigationMenuViewTest.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
namespace Hyde\Framework\Testing\Unit\Views;
66

7+
use Illuminate\Support\Str;
78
use Hyde\Facades\Filesystem;
89
use Hyde\Hyde;
910
use Hyde\Testing\TestCase;
11+
use Hyde\Pages\MarkdownPage;
1012

1113
/**
1214
* @see resources/views/layouts/navigation.blade.php
@@ -55,6 +57,49 @@ public function testComponentNotContains404HtmlLink()
5557
$this->assertStringNotContainsString('href="404.html"', $this->render());
5658
}
5759

60+
public function testNavigationMenuWithRootPages()
61+
{
62+
$foo = new MarkdownPage('foo');
63+
$bar = new MarkdownPage('bar');
64+
65+
Hyde::routes()->add($foo->getRoute());
66+
Hyde::routes()->add($bar->getRoute());
67+
68+
$this->mockRoute($foo->getRoute());
69+
$this->mockPage($foo);
70+
71+
$contents = $foo->compile();
72+
73+
$this->assertStringContainsString('<a href="foo.html" aria-current="page" class="', $contents);
74+
$this->assertStringContainsString('<a href="bar.html" class="', $contents);
75+
}
76+
77+
public function testNavigationMenuWithDropdownPages()
78+
{
79+
config(['hyde.navigation.subdirectories' => 'dropdown']);
80+
81+
$foo = new MarkdownPage('foo');
82+
$bar = new MarkdownPage('foo/bar');
83+
$baz = new MarkdownPage('foo/baz');
84+
85+
Hyde::routes()->add($foo->getRoute());
86+
Hyde::routes()->add($bar->getRoute());
87+
Hyde::routes()->add($baz->getRoute());
88+
89+
$this->mockRoute($foo->getRoute());
90+
$this->mockPage($foo);
91+
92+
$contents = $foo->compile();
93+
94+
$this->assertStringContainsString('dropdown-container', $contents);
95+
$this->assertStringContainsString('dropdown-button', $contents);
96+
97+
$dropdown = Str::between($contents, '<ul class="dropdown-items', '</ul>');
98+
99+
$this->assertStringContainsString('<a href="foo/bar.html"', $dropdown);
100+
$this->assertStringContainsString('<a href="foo/baz.html"', $dropdown);
101+
}
102+
58103
public function testNavigationMenuLabelCanBeChangedInFrontMatter()
59104
{
60105
$this->file('_pages/foo.md', '---

0 commit comments

Comments
 (0)