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,310 @@
1
+ require 'spec_helper'
2
+
3
+ describe SemanticNavigation::TwitterBootstrap::Tabs 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_tabs, SemanticNavigation::TwitterBootstrap::Tabs
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_tabs
25
+ result.should == "<ul class=\"nav nav-tabs pull-left\"></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_tabs
37
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
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 icon' do
52
+ @configuration.run do
53
+ navigate :menu do
54
+ item :url1, 'url1', :name => 'url1', :ico => 'user'
55
+ end
56
+ end
57
+
58
+ result = @view_object.navigation_for :menu, :as => :bootstrap_tabs
59
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
60
+ "<li>",
61
+ "<a href=\"url1\">",
62
+ "<i class=\"icon-user\"></i>",
63
+ "url1",
64
+ "</a>",
65
+ "</li>",
66
+ "</ul>"].join
67
+ end
68
+
69
+ it 'should render icon in node' do
70
+ @configuration.run do
71
+ navigate :menu do
72
+ item :url1, 'url1', :name => 'url1', :ico => 'user' do
73
+ item :url, 'url', :name => 'url'
74
+ end
75
+ end
76
+ end
77
+
78
+ result = @view_object.navigation_for :menu, :as => :bootstrap_tabs
79
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
80
+ "<li class=\" dropdown\">",
81
+ "<a class=\" dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">",
82
+ "<i class=\"icon-user\">",
83
+ "</i>url1",
84
+ "<b class=\"caret\">",
85
+ "</b>",
86
+ "</a>",
87
+ "<ul class=\" dropdown-menu\">",
88
+ "<li>",
89
+ "<a href=\"url\">url",
90
+ "</a>",
91
+ "</li>",
92
+ "</ul>",
93
+ "</li>",
94
+ "</ul>"].join
95
+ end
96
+
97
+ it 'should render one multilevel navigation' do
98
+ @configuration.run do
99
+ navigate :menu do
100
+ item :url1, 'url1', :name => 'url1' do
101
+ item :suburl1, 'suburl1', :name => 'suburl1'
102
+ end
103
+ item :url2, 'url2', :name => 'url2' do
104
+ item :suburl2, 'suburl2', :name => 'suburl2'
105
+ end
106
+ end
107
+ end
108
+
109
+ result = @view_object.navigation_for :menu, :as => :bootstrap_tabs
110
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
111
+ "<li class=\" dropdown\">",
112
+ "<a class=\" dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">",
113
+ "url1",
114
+ "<b class=\"caret\"></b>",
115
+ "</a>",
116
+ "<ul class=\" dropdown-menu\">",
117
+ "<li>",
118
+ "<a href=\"suburl1\">",
119
+ "suburl1",
120
+ "</a>",
121
+ "</li>",
122
+ "</ul>",
123
+ "</li>",
124
+ "<li class=\" dropdown\">",
125
+ "<a class=\" dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">url2",
126
+ "<b class=\"caret\">",
127
+ "</b>",
128
+ "</a>",
129
+ "<ul class=\" dropdown-menu\">",
130
+ "<li>",
131
+ "<a href=\"suburl2\">",
132
+ "suburl2",
133
+ "</a>",
134
+ "</li>",
135
+ "</ul>",
136
+ "</li>",
137
+ "</ul>"].join
138
+ end
139
+
140
+ it 'should render only root level' do
141
+ @configuration.run do
142
+ navigate :menu do
143
+ item :url1, 'url1', :name => 'url1' do
144
+ item :suburl1, 'suburl1', :name => 'suburl1'
145
+ end
146
+ item :url2, 'url2', :name => 'url2' do
147
+ item :suburl2, 'suburl2', :name => 'suburl2'
148
+ end
149
+ end
150
+ end
151
+
152
+ result = @view_object.navigation_for :menu, :level => 0, :as => :bootstrap_tabs
153
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
154
+ "<li>",
155
+ "<a href=\"url1\">",
156
+ "url1",
157
+ "</a>",
158
+ "</li>",
159
+ "<li>",
160
+ "<a href=\"url2\">",
161
+ "url2",
162
+ "</a>",
163
+ "</li>",
164
+ "</ul>"].join
165
+ end
166
+
167
+ it 'should render second level if some item of first level is active' do
168
+ @configuration.run do
169
+ navigate :menu do
170
+ item :url1, 'url1', :name => 'url1' do
171
+ item :suburl1, 'suburl1', :name => 'suburl1'
172
+ end
173
+ item :url2, 'url2', :name => 'url2' do
174
+ item :suburl2, 'suburl2', :name => 'suburl2'
175
+ end
176
+ end
177
+ end
178
+
179
+ @view_object.should_receive(:current_page?).and_return(false, true, false, false)
180
+
181
+ result = @view_object.navigation_for :menu, :level => 1, :as => :bootstrap_tabs
182
+ result.should == ["<ul class=\"nav nav-tabs active pull-left\">",
183
+ "<li>",
184
+ "<a href=\"suburl1\">suburl1",
185
+ "</a>",
186
+ "</li>",
187
+ "</ul>"].join
188
+ end
189
+
190
+ it 'should render the exact levels' do
191
+ @configuration.run do
192
+ navigate :menu do
193
+ item :url1, 'url1', :name => 'url1' do
194
+ item :suburl1, 'suburl1', :name => 'suburl1' do
195
+ item :subsub1, 'subsub1', :name => 'subsub1'
196
+ end
197
+ end
198
+ item :url2, 'url2', :name => 'url2' do
199
+ item :suburl2, 'suburl2', :name => 'suburl2' do
200
+ item :subsub2, 'subsub2', :name => 'subsub2'
201
+ end
202
+ end
203
+ end
204
+ end
205
+
206
+ result = @view_object.navigation_for :menu, :levels => 0..1, :as => :bootstrap_tabs
207
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
208
+ "<li class=\" dropdown\">",
209
+ "<a class=\" dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">url1",
210
+ "<b class=\"caret\">",
211
+ "</b>",
212
+ "</a>",
213
+ "<ul class=\" dropdown-menu\">",
214
+ "<li>",
215
+ "<a href=\"suburl1\">suburl1",
216
+ "</a>",
217
+ "</li>",
218
+ "</ul>",
219
+ "</li>",
220
+ "<li class=\" dropdown\">",
221
+ "<a class=\" dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">url2",
222
+ "<b class=\"caret\">",
223
+ "</b>",
224
+ "</a>",
225
+ "<ul class=\" dropdown-menu\">",
226
+ "<li>",
227
+ "<a href=\"suburl2\">suburl2",
228
+ "</a>",
229
+ "</li>",
230
+ "</ul>",
231
+ "</li>",
232
+ "</ul>"].join
233
+ end
234
+
235
+ it 'should render navigation except some item' do
236
+ @configuration.run do
237
+ navigate :menu do
238
+ item :url1, 'url1', :name => 'url1' do
239
+ item :suburl1, 'suburl1', :name => 'suburl1'
240
+ end
241
+ item :url2, 'url2', :name => 'url2' do
242
+ item :suburl2, 'suburl2', :name => 'suburl2'
243
+ end
244
+ end
245
+ end
246
+
247
+ result = @view_object.navigation_for :menu, :except_for => [:url1], :as => :bootstrap_tabs
248
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
249
+ "<li class=\" dropdown\">",
250
+ "<a class=\" dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">url2",
251
+ "<b class=\"caret\">",
252
+ "</b>",
253
+ "</a>",
254
+ "<ul class=\" dropdown-menu\">",
255
+ "<li>",
256
+ "<a href=\"suburl2\">suburl2",
257
+ "</a>",
258
+ "</li>",
259
+ "</ul>",
260
+ "</li>",
261
+ "</ul>"].join
262
+ end
263
+
264
+ it 'should render navigation except some items' do
265
+ @configuration.run do
266
+ navigate :menu do
267
+ item :url1, 'url1', :name => 'url1' do
268
+ item :suburl1, 'suburl1', :name => 'suburl1'
269
+ end
270
+ item :url2, 'url2', :name => 'url2' do
271
+ item :suburl2, 'suburl2', :name => 'suburl2'
272
+ end
273
+ end
274
+ end
275
+
276
+ result = @view_object.navigation_for :menu, :except_for => [:suburl1,:url2], :as => :bootstrap_tabs
277
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
278
+ "<li class=\" dropdown\">",
279
+ "<a class=\" dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">url1",
280
+ "<b class=\"caret\">",
281
+ "</b>",
282
+ "</a>",
283
+ "<ul class=\" dropdown-menu\">",
284
+ "</ul>",
285
+ "</li>",
286
+ "</ul>"].join
287
+ end
288
+
289
+ it 'should render navigation only item name if url is nil' do
290
+ @configuration.run do
291
+ navigate :menu do
292
+ item :url1, 'url1', :name => 'url1'
293
+ item :url2, nil, :name => 'url2'
294
+ end
295
+ end
296
+
297
+ result = @view_object.navigation_for :menu, :as => :bootstrap_tabs
298
+ result.should == ["<ul class=\"nav nav-tabs pull-left\">",
299
+ "<li>",
300
+ "<a href=\"url1\">",
301
+ "url1",
302
+ "</a>",
303
+ "</li>",
304
+ "<li>",
305
+ "url2",
306
+ "</li>",
307
+ "</ul>"].join
308
+ end
309
+
310
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rspec'
2
2
  require 'rails'
3
+ require 'action_view'
3
4
  require 'simplecov'
4
5
  SimpleCov.start do
5
6
  add_filter '/spec/'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semantic_navigation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-14 00:00:00.000000000 Z
12
+ date: 2012-08-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &8704340 !ruby/object:Gem::Requirement
16
+ requirement: &17103720 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.0.1
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *8704340
24
+ version_requirements: *17103720
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: simplecov
27
- requirement: &8703880 !ruby/object:Gem::Requirement
27
+ requirement: &17103260 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *8703880
35
+ version_requirements: *17103260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rails
38
- requirement: &8703340 !ruby/object:Gem::Requirement
38
+ requirement: &17102600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 3.0.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *8703340
46
+ version_requirements: *17102600
47
47
  description: ! "Simply and customizable navigation in the Ruby on Rails 3 application.\n
48
48
  \ Predefined bootstrap renderers"
49
49
  email:
@@ -53,10 +53,12 @@ extensions: []
53
53
  extra_rdoc_files: []
54
54
  files:
55
55
  - .gitignore
56
+ - .travis.yml
56
57
  - Changelog.md
57
58
  - Gemfile
58
59
  - README.md
59
60
  - Rakefile
61
+ - gemfiles/rails3
60
62
  - lib/generators/semantic_navigation/install/install_generator.rb
61
63
  - lib/generators/semantic_navigation/install/templates/semantic_navigation.en.yml
62
64
  - lib/generators/semantic_navigation/install/templates/semantic_navigation.rb
@@ -81,12 +83,16 @@ files:
81
83
  - lib/semantic_navigation/version.rb
82
84
  - semantic_navigation.gemspec
83
85
  - spec/lib/semantic_navigation/configuration_spec.rb
84
- - spec/lib/semantic_navigation/core/base_spec.rb
85
86
  - spec/lib/semantic_navigation/core/leaf_spec.rb
86
87
  - spec/lib/semantic_navigation/core/navigation_spec.rb
87
88
  - spec/lib/semantic_navigation/core/node_spec.rb
88
89
  - spec/lib/semantic_navigation/custom_renderer.rb
89
90
  - spec/lib/semantic_navigation/helper_methods_spec.rb
91
+ - spec/lib/semantic_navigation/renderers/bread_crumb_spec.rb
92
+ - spec/lib/semantic_navigation/renderers/list_spec.rb
93
+ - spec/lib/semantic_navigation/twitter_bootstrap/breadcrumb_spec.rb
94
+ - spec/lib/semantic_navigation/twitter_bootstrap/list_spec.rb
95
+ - spec/lib/semantic_navigation/twitter_bootstrap/tabs_spec.rb
90
96
  - spec/lib/semantic_navigation_spec.rb
91
97
  - spec/spec_helper.rb
92
98
  homepage: https://github.com/fr33z3/semantic_navigation
@@ -1 +0,0 @@
1
- require 'spec_helper'