semantic_navigation 0.0.13 → 0.0.14

Sign up to get free protection for your applications and to get access to all the features.
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