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,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'