semantic_navigation 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. data/.travis.yml +7 -0
  2. data/Changelog.md +7 -0
  3. data/README.md +25 -8
  4. data/Rakefile +2 -0
  5. data/gemfiles/rails3 +7 -0
  6. data/lib/generators/semantic_navigation/install/templates/semantic_navigation.rb +6 -2
  7. data/lib/semantic_navigation/configuration.rb +5 -0
  8. data/lib/semantic_navigation/core/base.rb +2 -2
  9. data/lib/semantic_navigation/core/leaf.rb +28 -10
  10. data/lib/semantic_navigation/core/navigation.rb +11 -4
  11. data/lib/semantic_navigation/core/node.rb +24 -12
  12. data/lib/semantic_navigation/helper_methods.rb +3 -1
  13. data/lib/semantic_navigation/renderers/bread_crumb.rb +3 -3
  14. data/lib/semantic_navigation/renderers/list.rb +2 -2
  15. data/lib/semantic_navigation/renderers/render_helpers.rb +6 -2
  16. data/lib/semantic_navigation/twitter_bootstrap/breadcrumb.rb +4 -4
  17. data/lib/semantic_navigation/twitter_bootstrap/list.rb +6 -6
  18. data/lib/semantic_navigation/twitter_bootstrap/tabs.rb +3 -3
  19. data/lib/semantic_navigation/version.rb +1 -1
  20. data/spec/lib/semantic_navigation/configuration_spec.rb +153 -0
  21. data/spec/lib/semantic_navigation/core/leaf_spec.rb +50 -0
  22. data/spec/lib/semantic_navigation/core/navigation_spec.rb +35 -0
  23. data/spec/lib/semantic_navigation/core/node_spec.rb +25 -0
  24. data/spec/lib/semantic_navigation/helper_methods_spec.rb +82 -0
  25. data/spec/lib/semantic_navigation/renderers/bread_crumb_spec.rb +203 -0
  26. data/spec/lib/semantic_navigation/renderers/list_spec.rb +241 -0
  27. data/spec/lib/semantic_navigation/twitter_bootstrap/breadcrumb_spec.rb +202 -0
  28. data/spec/lib/semantic_navigation/twitter_bootstrap/list_spec.rb +316 -0
  29. data/spec/lib/semantic_navigation/twitter_bootstrap/tabs_spec.rb +310 -0
  30. data/spec/spec_helper.rb +1 -0
  31. metadata +15 -9
  32. data/spec/lib/semantic_navigation/core/base_spec.rb +0 -1
@@ -0,0 +1,241 @@
1
+ require 'spec_helper'
2
+
3
+ describe SemanticNavigation::Renderers::List do
4
+
5
+ before :each do
6
+ class ViewObject
7
+ attr_accessor :output_buffer
8
+ include ActionView::Helpers::TagHelper
9
+ include SemanticNavigation::HelperMethods
10
+ include ActionView::Helpers::UrlHelper
11
+ end
12
+ @configuration = SemanticNavigation::Configuration
13
+ @configuration.register_renderer :list, SemanticNavigation::Renderers::List
14
+ @view_object = ViewObject.new
15
+ end
16
+
17
+ it 'should render empty ul tag for empty navigation' do
18
+
19
+ @configuration.run do
20
+ navigate :menu do
21
+ end
22
+ end
23
+
24
+ result = @view_object.navigation_for :menu
25
+ result.should == "<ul class=\"list\" id=\"menu\"><\/ul>"
26
+ end
27
+
28
+ it 'should render one level navigation' do
29
+ @configuration.run do
30
+ navigate :menu do
31
+ item :url1, 'url1', :name => 'url1'
32
+ item :url2, 'url2', :name => 'url2'
33
+ end
34
+ end
35
+
36
+ result = @view_object.navigation_for :menu
37
+ result.should == ["<ul class=\"list\" id=\"menu\">",
38
+ "<li id=\"url1\">",
39
+ "<a href=\"url1\" id=\"url1\">",
40
+ "url1",
41
+ "</a>",
42
+ "</li>",
43
+ "<li id=\"url2\">",
44
+ "<a href=\"url2\" id=\"url2\">",
45
+ "url2",
46
+ "</a>",
47
+ "</li>",
48
+ "</ul>"].join
49
+ end
50
+
51
+ it 'should render one multilevel navigation' do
52
+ @configuration.run do
53
+ navigate :menu do
54
+ item :url1, 'url1', :name => 'url1' do
55
+ item :suburl1, 'suburl1', :name => 'suburl1'
56
+ end
57
+ item :url2, 'url2', :name => 'url2' do
58
+ item :suburl2, 'suburl2', :name => 'suburl2'
59
+ end
60
+ end
61
+ end
62
+
63
+ result = @view_object.navigation_for :menu
64
+ result.should == ["<ul class=\"list\" id=\"menu\">",
65
+ "<li id=\"url1\">",
66
+ "<a href=\"url1\" id=\"url1\">",
67
+ "url1",
68
+ "</a>",
69
+ "<ul id=\"url1\">",
70
+ "<li id=\"suburl1\">",
71
+ "<a href=\"suburl1\" id=\"suburl1\">",
72
+ "suburl1",
73
+ "</a>",
74
+ "</li>",
75
+ "</ul>",
76
+ "</li>",
77
+ "<li id=\"url2\">",
78
+ "<a href=\"url2\" id=\"url2\">",
79
+ "url2",
80
+ "</a>",
81
+ "<ul id=\"url2\">",
82
+ "<li id=\"suburl2\">",
83
+ "<a href=\"suburl2\" id=\"suburl2\">",
84
+ "suburl2",
85
+ "</a>",
86
+ "</li>",
87
+ "</ul>",
88
+ "</li>",
89
+ "</ul>"].join
90
+ end
91
+
92
+ it 'should render only root level' do
93
+ @configuration.run do
94
+ navigate :menu do
95
+ item :url1, 'url1', :name => 'url1' do
96
+ item :suburl1, 'suburl1', :name => 'suburl1'
97
+ end
98
+ item :url2, 'url2', :name => 'url2' do
99
+ item :suburl2, 'suburl2', :name => 'suburl2'
100
+ end
101
+ end
102
+ end
103
+
104
+ result = @view_object.navigation_for :menu, :level => 0
105
+ result.should == ["<ul class=\"list\" id=\"menu\">",
106
+ "<li id=\"url1\">",
107
+ "<a href=\"url1\" id=\"url1\">",
108
+ "url1",
109
+ "</a>",
110
+ "</li>",
111
+ "<li id=\"url2\">",
112
+ "<a href=\"url2\" id=\"url2\">",
113
+ "url2",
114
+ "</a>",
115
+ "</li>",
116
+ "</ul>"].join
117
+ end
118
+
119
+ it 'should render second level if some item of first level is active' do
120
+ @configuration.run do
121
+ navigate :menu do
122
+ item :url1, 'url1', :name => 'url1' do
123
+ item :suburl1, 'suburl1', :name => 'suburl1'
124
+ end
125
+ item :url2, 'url2', :name => 'url2' do
126
+ item :suburl2, 'suburl2', :name => 'suburl2'
127
+ end
128
+ end
129
+ end
130
+
131
+ @view_object.should_receive(:current_page?).and_return(false, true, false, false)
132
+
133
+ result = @view_object.navigation_for :menu, :level => 1
134
+ result.should == ["<ul class=\"list active\" id=\"menu\">",
135
+ "<li id=\"suburl1\">",
136
+ "<a href=\"suburl1\" id=\"suburl1\">",
137
+ "suburl1",
138
+ "</a>",
139
+ "</li>",
140
+ "</ul>"].join
141
+ end
142
+
143
+ it 'should render the exact levels' do
144
+ @configuration.run do
145
+ navigate :menu do
146
+ item :url1, 'url1', :name => 'url1' do
147
+ item :suburl1, 'suburl1', :name => 'suburl1' do
148
+ item :subsub1, 'subsub1', :name => 'subsub1'
149
+ end
150
+ end
151
+ item :url2, 'url2', :name => 'url2' do
152
+ item :suburl2, 'suburl2', :name => 'suburl2' do
153
+ item :subsub2, 'subsub2', :name => 'subsub2'
154
+ end
155
+ end
156
+ end
157
+ end
158
+
159
+ result = @view_object.navigation_for :menu, :levels => 0..1
160
+ result.should == ["<ul class=\"list\" id=\"menu\">",
161
+ "<li id=\"url1\">",
162
+ "<a href=\"url1\" id=\"url1\">",
163
+ "url1",
164
+ "</a>",
165
+ "<ul id=\"url1\">",
166
+ "<li id=\"suburl1\">",
167
+ "<a href=\"suburl1\" id=\"suburl1\">",
168
+ "suburl1",
169
+ "</a>",
170
+ "</li>",
171
+ "</ul>",
172
+ "</li>",
173
+ "<li id=\"url2\">",
174
+ "<a href=\"url2\" id=\"url2\">",
175
+ "url2",
176
+ "</a>",
177
+ "<ul id=\"url2\">",
178
+ "<li id=\"suburl2\">",
179
+ "<a href=\"suburl2\" id=\"suburl2\">",
180
+ "suburl2",
181
+ "</a>",
182
+ "</li>",
183
+ "</ul>",
184
+ "</li>",
185
+ "</ul>"].join
186
+ end
187
+
188
+ it 'should render navigation except some item' do
189
+ @configuration.run do
190
+ navigate :menu do
191
+ item :url1, 'url1', :name => 'url1' do
192
+ item :suburl1, 'suburl1', :name => 'suburl1'
193
+ end
194
+ item :url2, 'url2', :name => 'url2' do
195
+ item :suburl2, 'suburl2', :name => 'suburl2'
196
+ end
197
+ end
198
+ end
199
+
200
+ result = @view_object.navigation_for :menu, :except_for => [:url1]
201
+ result.should == ["<ul class=\"list\" id=\"menu\">",
202
+ "<li id=\"url2\">",
203
+ "<a href=\"url2\" id=\"url2\">",
204
+ "url2",
205
+ "</a>",
206
+ "<ul id=\"url2\">",
207
+ "<li id=\"suburl2\">",
208
+ "<a href=\"suburl2\" id=\"suburl2\">",
209
+ "suburl2",
210
+ "</a>",
211
+ "</li>",
212
+ "</ul>",
213
+ "</li>",
214
+ "</ul>"].join
215
+ end
216
+
217
+ it 'should render navigation except some items' do
218
+ @configuration.run do
219
+ navigate :menu do
220
+ item :url1, 'url1', :name => 'url1' do
221
+ item :suburl1, 'suburl1', :name => 'suburl1'
222
+ end
223
+ item :url2, 'url2', :name => 'url2' do
224
+ item :suburl2, 'suburl2', :name => 'suburl2'
225
+ end
226
+ end
227
+ end
228
+
229
+ result = @view_object.navigation_for :menu, :except_for => [:suburl1,:url2]
230
+ result.should == ["<ul class=\"list\" id=\"menu\">",
231
+ "<li id=\"url1\">",
232
+ "<a href=\"url1\" id=\"url1\">",
233
+ "url1",
234
+ "</a>",
235
+ "<ul id=\"url1\">",
236
+ "</ul>",
237
+ "</li>",
238
+ "</ul>"].join
239
+ end
240
+
241
+ end
@@ -0,0 +1,202 @@
1
+ require 'spec_helper'
2
+
3
+ describe SemanticNavigation::TwitterBootstrap::Breadcrumb do
4
+ before :each do
5
+ class ViewObject
6
+ attr_accessor :output_buffer
7
+ include ActionView::Helpers::TagHelper
8
+ include SemanticNavigation::HelperMethods
9
+ include ActionView::Helpers::UrlHelper
10
+ end
11
+ @configuration = SemanticNavigation::Configuration
12
+ @configuration.register_renderer :bootstrap_breadcrumb, SemanticNavigation::TwitterBootstrap::Breadcrumb
13
+ @view_object = ViewObject.new
14
+ end
15
+
16
+ it 'should render empty ul tag for empty navigation' do
17
+
18
+ @configuration.run do
19
+ navigate :menu do
20
+ end
21
+ end
22
+
23
+ result = @view_object.navigation_for :menu, :as => :bootstrap_breadcrumb
24
+ result.should == "<ul class=\"breadcrumb\"></ul>"
25
+ end
26
+
27
+ it 'should render one level navigation breadcrumb' do
28
+ @configuration.run do
29
+ navigate :menu do
30
+ item :url1, 'url1', :name => 'url1'
31
+ item :url2, 'url2', :name => 'url2'
32
+ end
33
+ end
34
+
35
+ @view_object.should_receive(:current_page?).and_return(false,true)
36
+
37
+ result = @view_object.navigation_for :menu, :as => :bootstrap_breadcrumb
38
+ result.should == ["<ul class=\"breadcrumb\">",
39
+ "<li>",
40
+ "url2",
41
+ "</li>",
42
+ "</ul>"].join
43
+ end
44
+
45
+ it 'should render one multilevel navigation breadcrumb' do
46
+ @configuration.run do
47
+ navigate :menu do
48
+ item :url1, 'url1', :name => 'url1' do
49
+ item :suburl1, 'suburl1', :name => 'suburl1'
50
+ end
51
+ item :url2, 'url2', :name => 'url2' do
52
+ item :suburl2, 'suburl2', :name => 'suburl2'
53
+ end
54
+ end
55
+ end
56
+
57
+ @view_object.should_receive(:current_page?).and_return(true,false,false,false)
58
+
59
+ result = @view_object.navigation_for :menu, :as => :bootstrap_breadcrumb
60
+ result.should == ["<ul class=\"breadcrumb\">",
61
+ "<li>",
62
+ "<a href=\"url1\">",
63
+ "url1",
64
+ "</a>",
65
+ "<span class=\"divider\">/",
66
+ "</span>",
67
+ "</li>",
68
+ "<li>",
69
+ "suburl1",
70
+ "</li>",
71
+ "</ul>"].join
72
+ end
73
+
74
+ it 'should render last item as link if :last_as_link => true' do
75
+ @configuration.run do
76
+ navigate :menu do
77
+ item :url1, 'url1', :name => 'url1' do
78
+ item :suburl1, 'suburl1', :name => 'suburl1'
79
+ end
80
+ item :url2, 'url2', :name => 'url2' do
81
+ item :suburl2, 'suburl2', :name => 'suburl2'
82
+ end
83
+ end
84
+ end
85
+
86
+ @view_object.should_receive(:current_page?).and_return(true,false,false,false)
87
+
88
+ result = @view_object.navigation_for :menu, :as => :bootstrap_breadcrumb, :last_as_link => true
89
+ result.should == ["<ul class=\"breadcrumb\">",
90
+ "<li>",
91
+ "<a href=\"url1\">",
92
+ "url1",
93
+ "</a>",
94
+ "<span class=\"divider\">/",
95
+ "</span>",
96
+ "</li>",
97
+ "<li>",
98
+ "<a href=\"suburl1\">",
99
+ "suburl1",
100
+ "</a>",
101
+ "</li>",
102
+ "</ul>"].join
103
+ end
104
+
105
+ it 'should render only root level' do
106
+ @configuration.run do
107
+ navigate :menu do
108
+ item :url1, 'url1', :name => 'url1' do
109
+ item :suburl1, 'suburl1', :name => 'suburl1'
110
+ end
111
+ item :url2, 'url2', :name => 'url2' do
112
+ item :suburl2, 'suburl2', :name => 'suburl2'
113
+ end
114
+ end
115
+ end
116
+
117
+ @view_object.should_receive(:current_page?).and_return(true,false,false,false)
118
+
119
+ result = @view_object.navigation_for :menu, :level => 0, :as => :bootstrap_breadcrumb
120
+ result.should == ["<ul class=\"breadcrumb\">",
121
+ "<li>",
122
+ "url1",
123
+ "</li>",
124
+ "</ul>"].join
125
+ end
126
+
127
+ it 'should render second level' do
128
+ @configuration.run do
129
+ navigate :menu do
130
+ item :url1, 'url1', :name => 'url1' do
131
+ item :suburl1, 'suburl1', :name => 'suburl1'
132
+ end
133
+ item :url2, 'url2', :name => 'url2' do
134
+ item :suburl2, 'suburl2', :name => 'suburl2'
135
+ end
136
+ end
137
+ end
138
+
139
+ @view_object.should_receive(:current_page?).and_return(true, false, false, false)
140
+
141
+ result = @view_object.navigation_for :menu, :level => 1, :as => :bootstrap_breadcrumb
142
+ result.should == ["<ul class=\"breadcrumb\">",
143
+ "<li>",
144
+ "suburl1",
145
+ "</li>",
146
+ "</ul>"].join
147
+ end
148
+
149
+ it 'should render the exact levels' do
150
+ @configuration.run do
151
+ navigate :menu do
152
+ item :url1, 'url1', :name => 'url1' do
153
+ item :suburl1, 'suburl1', :name => 'suburl1' do
154
+ item :subsub1, 'subsub1', :name => 'subsub1'
155
+ end
156
+ end
157
+ item :url2, 'url2', :name => 'url2' do
158
+ item :suburl2, 'suburl2', :name => 'suburl2' do
159
+ item :subsub2, 'subsub2', :name => 'subsub2'
160
+ end
161
+ end
162
+ end
163
+ end
164
+
165
+ @view_object.should_receive(:current_page?).and_return(true, false, false, false, false, false)
166
+
167
+ result = @view_object.navigation_for :menu, :levels => 0..1, :as => :bootstrap_breadcrumb
168
+ result.should == ["<ul class=\"breadcrumb\">",
169
+ "<li>",
170
+ "<a href=\"url1\">",
171
+ "url1",
172
+ "</a>",
173
+ "<span class=\"divider\">/",
174
+ "</span>",
175
+ "</li>",
176
+ "<li>",
177
+ "suburl1",
178
+ "</li>",
179
+ "</ul>"].join
180
+ end
181
+
182
+ it 'should render navigation except some item' do
183
+ @configuration.run do
184
+ navigate :menu do
185
+ item :url1, 'url1', :name => 'url1' do
186
+ item :suburl1, 'suburl1', :name => 'suburl1'
187
+ end
188
+ item :url2, 'url2', :name => 'url2' do
189
+ item :suburl2, 'suburl2', :name => 'suburl2'
190
+ end
191
+ end
192
+ end
193
+
194
+ @view_object.should_receive(:current_page?).and_return(true, false, false, false)
195
+ result = @view_object.navigation_for :menu, :except_for => [:suburl1], :as => :bootstrap_breadcrumb
196
+ result.should == ["<ul class=\"breadcrumb\">",
197
+ "<li>",
198
+ "url1",
199
+ "</li>",
200
+ "</ul>"].join
201
+ end
202
+ end
@@ -0,0 +1,316 @@
1
+ require 'spec_helper'
2
+
3
+ describe SemanticNavigation::TwitterBootstrap::List do
4
+
5
+ before :each do
6
+ class ViewObject
7
+ attr_accessor :output_buffer
8
+ include ActionView::Helpers::TagHelper
9
+ include SemanticNavigation::HelperMethods
10
+ include ActionView::Helpers::UrlHelper
11
+ end
12
+ @configuration = SemanticNavigation::Configuration
13
+ @configuration.register_renderer :bootstrap_list, SemanticNavigation::TwitterBootstrap::List
14
+ @view_object = ViewObject.new
15
+ end
16
+
17
+ it 'should render empty ul tag for empty navigation' do
18
+
19
+ @configuration.run do
20
+ navigate :menu do
21
+ end
22
+ end
23
+
24
+ result = @view_object.navigation_for :menu, :as => :bootstrap_list
25
+ result.should == "<ul class=\"nav nav-list\"></ul>"
26
+ end
27
+
28
+ it 'should render one level navigation' do
29
+ @configuration.run do
30
+ navigate :menu do
31
+ item :url1, 'url1', :name => 'url1'
32
+ item :url2, 'url2', :name => 'url2'
33
+ end
34
+ end
35
+
36
+ result = @view_object.navigation_for :menu, :as => :bootstrap_list
37
+ result.should == ["<ul class=\"nav nav-list\">",
38
+ "<li>",
39
+ "<a href=\"url1\">",
40
+ "url1",
41
+ "</a>",
42
+ "</li>",
43
+ "<li>",
44
+ "<a href=\"url2\">",
45
+ "url2",
46
+ "</a>",
47
+ "</li>",
48
+ "</ul>"].join
49
+ end
50
+
51
+ it 'should render one multilevel navigation' do
52
+ @configuration.run do
53
+ navigate :menu do
54
+ item :url1, 'url1', :name => 'url1' do
55
+ item :suburl1, 'suburl1', :name => 'suburl1'
56
+ end
57
+ item :url2, 'url2', :name => 'url2' do
58
+ item :suburl2, 'suburl2', :name => 'suburl2'
59
+ end
60
+ end
61
+ end
62
+
63
+ result = @view_object.navigation_for :menu, :as => :bootstrap_list
64
+ result.should == ["<ul class=\"nav nav-list\">",
65
+ "<li>",
66
+ "<a href=\"url1\">",
67
+ "url1",
68
+ "</a>",
69
+ "<ul>",
70
+ "<li>",
71
+ "<a href=\"suburl1\">",
72
+ "suburl1",
73
+ "</a>",
74
+ "</li>",
75
+ "</ul>",
76
+ "</li>",
77
+ "<li>",
78
+ "<a href=\"url2\">",
79
+ "url2",
80
+ "</a>",
81
+ "<ul>",
82
+ "<li>",
83
+ "<a href=\"suburl2\">",
84
+ "suburl2",
85
+ "</a>",
86
+ "</li>",
87
+ "</ul>",
88
+ "</li>",
89
+ "</ul>"].join
90
+ end
91
+
92
+ it 'should render only root level' do
93
+ @configuration.run do
94
+ navigate :menu do
95
+ item :url1, 'url1', :name => 'url1' do
96
+ item :suburl1, 'suburl1', :name => 'suburl1'
97
+ end
98
+ item :url2, 'url2', :name => 'url2' do
99
+ item :suburl2, 'suburl2', :name => 'suburl2'
100
+ end
101
+ end
102
+ end
103
+
104
+ result = @view_object.navigation_for :menu, :level => 0, :as => :bootstrap_list
105
+ result.should == ["<ul class=\"nav nav-list\">",
106
+ "<li>",
107
+ "<a href=\"url1\">",
108
+ "url1",
109
+ "</a>",
110
+ "</li>",
111
+ "<li>",
112
+ "<a href=\"url2\">",
113
+ "url2",
114
+ "</a>",
115
+ "</li>",
116
+ "</ul>"].join
117
+ end
118
+
119
+ it 'should render second level if some item of first level is active' do
120
+ @configuration.run do
121
+ navigate :menu do
122
+ item :url1, 'url1', :name => 'url1' do
123
+ item :suburl1, 'suburl1', :name => 'suburl1'
124
+ end
125
+ item :url2, 'url2', :name => 'url2' do
126
+ item :suburl2, 'suburl2', :name => 'suburl2'
127
+ end
128
+ end
129
+ end
130
+
131
+ @view_object.should_receive(:current_page?).and_return(false, true, false, false)
132
+
133
+ result = @view_object.navigation_for :menu, :level => 1, :as => :bootstrap_list
134
+ result.should == ["<ul class=\"nav nav-list active\">",
135
+ "<li>",
136
+ "<a href=\"suburl1\">",
137
+ "suburl1",
138
+ "</a>",
139
+ "</li>",
140
+ "</ul>"].join
141
+ end
142
+
143
+ it 'should render the exact levels' do
144
+ @configuration.run do
145
+ navigate :menu do
146
+ item :url1, 'url1', :name => 'url1' do
147
+ item :suburl1, 'suburl1', :name => 'suburl1' do
148
+ item :subsub1, 'subsub1', :name => 'subsub1'
149
+ end
150
+ end
151
+ item :url2, 'url2', :name => 'url2' do
152
+ item :suburl2, 'suburl2', :name => 'suburl2' do
153
+ item :subsub2, 'subsub2', :name => 'subsub2'
154
+ end
155
+ end
156
+ end
157
+ end
158
+
159
+ result = @view_object.navigation_for :menu, :levels => 0..1, :as => :bootstrap_list
160
+ result.should == ["<ul class=\"nav nav-list\">",
161
+ "<li>",
162
+ "<a href=\"url1\">",
163
+ "url1",
164
+ "</a>",
165
+ "<ul>",
166
+ "<li>",
167
+ "<a href=\"suburl1\">",
168
+ "suburl1",
169
+ "</a>",
170
+ "</li>",
171
+ "</ul>",
172
+ "</li>",
173
+ "<li>",
174
+ "<a href=\"url2\">",
175
+ "url2",
176
+ "</a>",
177
+ "<ul>",
178
+ "<li>",
179
+ "<a href=\"suburl2\">",
180
+ "suburl2",
181
+ "</a>",
182
+ "</li>",
183
+ "</ul>",
184
+ "</li>",
185
+ "</ul>"].join
186
+ end
187
+
188
+ it 'should render navigation except some item' do
189
+ @configuration.run do
190
+ navigate :menu do
191
+ item :url1, 'url1', :name => 'url1' do
192
+ item :suburl1, 'suburl1', :name => 'suburl1'
193
+ end
194
+ item :url2, 'url2', :name => 'url2' do
195
+ item :suburl2, 'suburl2', :name => 'suburl2'
196
+ end
197
+ end
198
+ end
199
+
200
+ result = @view_object.navigation_for :menu, :except_for => [:url1], :as => :bootstrap_list
201
+ result.should == ["<ul class=\"nav nav-list\">",
202
+ "<li>",
203
+ "<a href=\"url2\">",
204
+ "url2",
205
+ "</a>",
206
+ "<ul>",
207
+ "<li>",
208
+ "<a href=\"suburl2\">",
209
+ "suburl2",
210
+ "</a>",
211
+ "</li>",
212
+ "</ul>",
213
+ "</li>",
214
+ "</ul>"].join
215
+ end
216
+
217
+ it 'should render navigation except some items' do
218
+ @configuration.run do
219
+ navigate :menu do
220
+ item :url1, 'url1', :name => 'url1' do
221
+ item :suburl1, 'suburl1', :name => 'suburl1'
222
+ end
223
+ item :url2, 'url2', :name => 'url2' do
224
+ item :suburl2, 'suburl2', :name => 'suburl2'
225
+ end
226
+ end
227
+ end
228
+
229
+ result = @view_object.navigation_for :menu, :except_for => [:suburl1,:url2], :as => :bootstrap_list
230
+ result.should == ["<ul class=\"nav nav-list\">",
231
+ "<li>",
232
+ "<a href=\"url1\">",
233
+ "url1",
234
+ "</a>",
235
+ "<ul>",
236
+ "</ul>",
237
+ "</li>",
238
+ "</ul>"].join
239
+ end
240
+
241
+ it 'should render divider' do
242
+ @configuration.run do
243
+ navigate :menu do
244
+ divider
245
+ end
246
+ end
247
+
248
+ result = @view_object.navigation_for :menu, :as => :bootstrap_list
249
+ result.should == ["<ul class=\"nav nav-list\">",
250
+ "<li class=\"divider\">",
251
+ "</li>",
252
+ "</ul>"].join
253
+ end
254
+
255
+ it 'should render header' do
256
+ @configuration.run do
257
+ navigate :menu do
258
+ header :some_header, :name => 'header_name'
259
+ end
260
+ end
261
+
262
+ result = @view_object.navigation_for :menu, :as => :bootstrap_list
263
+ result.should == ["<ul class=\"nav nav-list\">",
264
+ "<li class=\"nav-header\">",
265
+ 'header_name',
266
+ "</li>",
267
+ "</ul>"].join
268
+ end
269
+
270
+ it 'shoul render item with icon' do
271
+ @configuration.run do
272
+ navigate :menu do
273
+ item :some_item, 'some_url', :name => 'item_name', :ico => 'user'
274
+ end
275
+ end
276
+
277
+ result = @view_object.navigation_for :menu, :as => :bootstrap_list
278
+ result.should == ["<ul class=\"nav nav-list\">",
279
+ "<li>",
280
+ "<a href=\"some_url\">",
281
+ "<i class=\"icon-user\">",
282
+ "</i>",
283
+ "item_name",
284
+ "</a>",
285
+ "</li>",
286
+ "</ul>"].join
287
+ end
288
+
289
+ it 'should render node with icon' do
290
+ @configuration.run do
291
+ navigate :menu do
292
+ item :node, 'node_url', :name => 'some_name', :ico => 'user' do
293
+ item :some_item, 'some_url', :name => 'item_name'
294
+ end
295
+ end
296
+ end
297
+
298
+ result = @view_object.navigation_for :menu, :as => :bootstrap_list
299
+ result.should == ["<ul class=\"nav nav-list\">",
300
+ "<li>",
301
+ "<a href=\"node_url\">",
302
+ "<i class=\"icon-user\"></i>",
303
+ "some_name",
304
+ "</a>",
305
+ "<ul>",
306
+ "<li>",
307
+ "<a href=\"some_url\">",
308
+ "item_name",
309
+ "</a>",
310
+ "</li>",
311
+ "</ul>",
312
+ "</li>",
313
+ "</ul>"].join
314
+ end
315
+
316
+ end