1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Hyde\Framework\Testing\Feature\Concerns; |
4
|
|
|
|
5
|
|
|
use Hyde\Framework\Models\Pages\DocumentationPage; |
6
|
|
|
use Hyde\Framework\Models\Pages\MarkdownPage; |
7
|
|
|
use Hyde\Framework\Models\Pages\MarkdownPost; |
8
|
|
|
use Hyde\Testing\TestCase; |
9
|
|
|
|
10
|
|
|
/** |
11
|
|
|
* @covers \Hyde\Framework\Concerns\CanBeInNavigation |
12
|
|
|
*/ |
13
|
|
|
class CanBeInNavigationTest extends TestCase |
14
|
|
|
{ |
15
|
|
|
public function test_show_in_navigation_returns_false_for_markdown_post() |
16
|
|
|
{ |
17
|
|
|
$page = $this->mock(MarkdownPost::class)->makePartial(); |
18
|
|
|
|
19
|
|
|
$this->assertFalse($page->showInNavigation()); |
20
|
|
|
} |
21
|
|
|
|
22
|
|
|
public function test_show_in_navigation_returns_true_for_documentation_page_if_slug_is_index() |
23
|
|
|
{ |
24
|
|
|
$page = $this->mock(DocumentationPage::class)->makePartial(); |
25
|
|
|
$page->identifier = 'index'; |
26
|
|
|
|
27
|
|
|
$this->assertTrue($page->showInNavigation()); |
28
|
|
|
} |
29
|
|
|
|
30
|
|
|
public function test_show_in_navigation_returns_false_for_documentation_page_if_slug_is_not_index() |
31
|
|
|
{ |
32
|
|
|
$page = $this->mock(DocumentationPage::class)->makePartial(); |
33
|
|
|
$page->identifier = 'not-index'; |
34
|
|
|
|
35
|
|
|
$this->assertFalse($page->showInNavigation()); |
36
|
|
|
} |
37
|
|
|
|
38
|
|
|
public function test_show_in_navigation_returns_false_for_abstract_markdown_page_if_matter_navigation_hidden_is_true() |
39
|
|
|
{ |
40
|
|
|
$page = MarkdownPage::make('foo', ['navigation.hidden' => true]); |
41
|
|
|
|
42
|
|
|
$this->assertFalse($page->showInNavigation()); |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
public function test_show_in_navigation_returns_true_for_abstract_markdown_page_if_matter_navigation_hidden_is_false() |
46
|
|
|
{ |
47
|
|
|
$page = MarkdownPage::make('foo', ['navigation.hidden' => false]); |
48
|
|
|
|
49
|
|
|
$this->assertTrue($page->showInNavigation()); |
50
|
|
|
} |
51
|
|
|
|
52
|
|
|
public function test_show_in_navigation_returns_true_for_abstract_markdown_page_if_matter_navigation_hidden_is_not_set() |
53
|
|
|
{ |
54
|
|
|
$page = MarkdownPage::make('foo', ['navigation.hidden' => null]); |
55
|
|
|
|
56
|
|
|
$this->assertTrue($page->showInNavigation()); |
57
|
|
|
} |
58
|
|
|
|
59
|
|
|
public function test_show_in_navigation_returns_false_if_slug_is_present_in_config_hyde_navigation_exclude() |
60
|
|
|
{ |
61
|
|
|
$page = MarkdownPage::make('foo'); |
62
|
|
|
|
63
|
|
|
$this->assertTrue($page->showInNavigation()); |
64
|
|
|
|
65
|
|
|
config(['hyde.navigation.exclude' => ['foo']]); |
66
|
|
|
$this->assertFalse($page->showInNavigation()); |
67
|
|
|
} |
68
|
|
|
|
69
|
|
|
public function test_show_in_navigation_returns_false_if_slug_is_404() |
70
|
|
|
{ |
71
|
|
|
$page = MarkdownPage::make('404'); |
72
|
|
|
$this->assertFalse($page->showInNavigation()); |
73
|
|
|
} |
74
|
|
|
|
75
|
|
|
public function test_show_in_navigation_defaults_to_true_if_all_checks_pass() |
76
|
|
|
{ |
77
|
|
|
$page = MarkdownPage::make('foo'); |
78
|
|
|
$this->assertTrue($page->showInNavigation()); |
79
|
|
|
} |
80
|
|
|
|
81
|
|
|
public function test_navigation_menu_priority_returns_front_matter_value_of_navigation_priority_if_abstract_markdown_page_and_not_null() |
82
|
|
|
{ |
83
|
|
|
$page = MarkdownPage::make('foo', ['navigation.priority' => 1]); |
84
|
|
|
$this->assertEquals(1, $page->navigationMenuPriority()); |
85
|
|
|
} |
86
|
|
|
|
87
|
|
|
public function test_navigation_menu_priority_returns_specified_config_value_if_slug_exists_in_config_hyde_navigation_order() |
88
|
|
|
{ |
89
|
|
|
$page = MarkdownPage::make('foo'); |
90
|
|
|
$this->assertEquals(999, $page->navigationMenuPriority()); |
91
|
|
|
|
92
|
|
|
config(['hyde.navigation.order' => ['foo' => 1]]); |
93
|
|
|
$this->assertEquals(1, $page->navigationMenuPriority()); |
94
|
|
|
} |
95
|
|
|
|
96
|
|
|
public function test_navigation_menu_priority_gives_precedence_to_front_matter_over_config_hyde_navigation_order() |
97
|
|
|
{ |
98
|
|
|
$page = MarkdownPage::make('foo', ['navigation.priority' => 1]); |
99
|
|
|
|
100
|
|
|
$this->assertEquals(1, $page->navigationMenuPriority()); |
101
|
|
|
|
102
|
|
|
config(['hyde.navigation.order' => ['foo' => 2]]); |
103
|
|
|
$this->assertEquals(1, $page->navigationMenuPriority()); |
104
|
|
|
} |
105
|
|
|
|
106
|
|
|
public function test_navigation_menu_priority_returns_100_for_documentation_page() |
107
|
|
|
{ |
108
|
|
|
$page = DocumentationPage::make('foo'); |
109
|
|
|
$this->assertEquals(100, $page->navigationMenuPriority()); |
110
|
|
|
} |
111
|
|
|
|
112
|
|
|
public function test_navigation_menu_priority_returns_0_if_slug_is_index() |
113
|
|
|
{ |
114
|
|
|
$page = MarkdownPage::make('index'); |
115
|
|
|
$this->assertEquals(0, $page->navigationMenuPriority()); |
116
|
|
|
} |
117
|
|
|
|
118
|
|
|
public function test_navigation_menu_priority_does_not_return_0_if_slug_is_index_but_model_is_documentation_page() |
119
|
|
|
{ |
120
|
|
|
$page = DocumentationPage::make('index'); |
121
|
|
|
$this->assertEquals(100, $page->navigationMenuPriority()); |
122
|
|
|
} |
123
|
|
|
|
124
|
|
|
public function test_navigation_menu_priority_returns_10_if_slug_is_posts() |
125
|
|
|
{ |
126
|
|
|
$page = MarkdownPage::make('posts'); |
127
|
|
|
$this->assertEquals(10, $page->navigationMenuPriority()); |
128
|
|
|
} |
129
|
|
|
|
130
|
|
|
public function test_navigation_menu_priority_defaults_to_999_if_no_other_conditions_are_met() |
131
|
|
|
{ |
132
|
|
|
$page = MarkdownPage::make('foo'); |
133
|
|
|
$this->assertEquals(999, $page->navigationMenuPriority()); |
134
|
|
|
} |
135
|
|
|
|
136
|
|
|
public function test_navigation_menu_title_returns_navigation_title_matter_if_set() |
137
|
|
|
{ |
138
|
|
|
$page = MarkdownPage::make('foo', ['navigation.title' => 'foo']); |
139
|
|
|
$this->assertEquals('foo', $page->navigationMenuTitle()); |
140
|
|
|
} |
141
|
|
|
|
142
|
|
|
public function test_navigation_menu_title_returns_title_matter_if_set() |
143
|
|
|
{ |
144
|
|
|
$page = MarkdownPage::make('foo', ['title' => 'foo']); |
145
|
|
|
$this->assertEquals('foo', $page->navigationMenuTitle()); |
146
|
|
|
} |
147
|
|
|
|
148
|
|
|
public function test_navigation_menu_title_navigation_title_has_precedence_over_title() |
149
|
|
|
{ |
150
|
|
|
$page = MarkdownPage::make('foo', ['title' => 'foo', 'navigation.title' => 'bar']); |
151
|
|
|
$this->assertEquals('bar', $page->navigationMenuTitle()); |
152
|
|
|
} |
153
|
|
|
|
154
|
|
|
public function test_navigation_menu_title_returns_docs_if_slug_is_index_and_model_is_documentation_page() |
155
|
|
|
{ |
156
|
|
|
$page = DocumentationPage::make('index'); |
157
|
|
|
$this->assertEquals('Docs', $page->navigationMenuTitle()); |
158
|
|
|
} |
159
|
|
|
|
160
|
|
|
public function test_navigation_menu_title_returns_home_if_slug_is_index_and_model_is_not_documentation_page() |
161
|
|
|
{ |
162
|
|
|
$page = MarkdownPage::make('index'); |
163
|
|
|
$this->assertEquals('Home', $page->navigationMenuTitle()); |
164
|
|
|
} |
165
|
|
|
|
166
|
|
|
public function test_navigation_menu_title_returns_title_if_title_is_set_and_not_empty() |
167
|
|
|
{ |
168
|
|
|
$page = MarkdownPage::make('bar', ['title' => 'foo']); |
169
|
|
|
$this->assertEquals('foo', $page->navigationMenuTitle()); |
170
|
|
|
} |
171
|
|
|
|
172
|
|
|
public function test_navigation_menu_title_falls_back_to_hyde_make_title_from_slug() |
173
|
|
|
{ |
174
|
|
|
$page = MarkdownPage::make('foo'); |
175
|
|
|
$this->assertEquals('Foo', $page->navigationMenuTitle()); |
176
|
|
|
} |
177
|
|
|
} |
178
|
|
|
|