jordanyeo-simple-navigation 3.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/CHANGELOG +265 -0
  2. data/Gemfile +17 -0
  3. data/README +22 -0
  4. data/Rakefile +47 -0
  5. data/VERSION +1 -0
  6. data/generators/navigation_config/USAGE +1 -0
  7. data/generators/navigation_config/navigation_config_generator.rb +8 -0
  8. data/generators/navigation_config/templates/config/navigation.rb +76 -0
  9. data/lib/generators/navigation_config/navigation_config_generator.rb +12 -0
  10. data/lib/simple-navigation.rb +1 -0
  11. data/lib/simple_navigation.rb +167 -0
  12. data/lib/simple_navigation/adapters.rb +10 -0
  13. data/lib/simple_navigation/adapters/base.rb +37 -0
  14. data/lib/simple_navigation/adapters/nanoc.rb +45 -0
  15. data/lib/simple_navigation/adapters/padrino.rb +20 -0
  16. data/lib/simple_navigation/adapters/rails.rb +93 -0
  17. data/lib/simple_navigation/adapters/sinatra.rb +69 -0
  18. data/lib/simple_navigation/core.rb +5 -0
  19. data/lib/simple_navigation/core/configuration.rb +72 -0
  20. data/lib/simple_navigation/core/item.rb +144 -0
  21. data/lib/simple_navigation/core/item_adapter.rb +63 -0
  22. data/lib/simple_navigation/core/item_container.rb +147 -0
  23. data/lib/simple_navigation/core/items_provider.rb +35 -0
  24. data/lib/simple_navigation/rails_controller_methods.rb +144 -0
  25. data/lib/simple_navigation/rendering.rb +12 -0
  26. data/lib/simple_navigation/rendering/helpers.rb +123 -0
  27. data/lib/simple_navigation/rendering/renderer/base.rb +107 -0
  28. data/lib/simple_navigation/rendering/renderer/breadcrumbs.rb +59 -0
  29. data/lib/simple_navigation/rendering/renderer/json.rb +29 -0
  30. data/lib/simple_navigation/rendering/renderer/links.rb +32 -0
  31. data/lib/simple_navigation/rendering/renderer/list.rb +29 -0
  32. data/lib/simple_navigation/rendering/renderer/text.rb +26 -0
  33. data/rails/init.rb +1 -0
  34. data/spec/lib/simple_navigation/adapters/padrino_spec.rb +31 -0
  35. data/spec/lib/simple_navigation/adapters/rails_spec.rb +287 -0
  36. data/spec/lib/simple_navigation/adapters/sinatra_spec.rb +80 -0
  37. data/spec/lib/simple_navigation/core/configuration_spec.rb +128 -0
  38. data/spec/lib/simple_navigation/core/item_adapter_spec.rb +212 -0
  39. data/spec/lib/simple_navigation/core/item_container_spec.rb +451 -0
  40. data/spec/lib/simple_navigation/core/item_spec.rb +566 -0
  41. data/spec/lib/simple_navigation/core/items_provider_spec.rb +60 -0
  42. data/spec/lib/simple_navigation/rails_controller_methods_spec.rb +249 -0
  43. data/spec/lib/simple_navigation/rendering/helpers_spec.rb +276 -0
  44. data/spec/lib/simple_navigation/rendering/renderer/base_spec.rb +199 -0
  45. data/spec/lib/simple_navigation/rendering/renderer/breadcrumbs_spec.rb +101 -0
  46. data/spec/lib/simple_navigation/rendering/renderer/json_spec.rb +48 -0
  47. data/spec/lib/simple_navigation/rendering/renderer/links_spec.rb +64 -0
  48. data/spec/lib/simple_navigation/rendering/renderer/list_spec.rb +211 -0
  49. data/spec/lib/simple_navigation/rendering/renderer/text_spec.rb +41 -0
  50. data/spec/lib/simple_navigation_spec.rb +307 -0
  51. data/spec/spec_helper.rb +108 -0
  52. metadata +199 -0
@@ -0,0 +1,566 @@
1
+ require 'spec_helper'
2
+
3
+ describe SimpleNavigation::Item do
4
+
5
+ before(:each) do
6
+ @item_container = stub(:item_container, :level => 1, :selected_class => nil).as_null_object
7
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {})
8
+ @adapter = stub(:adapter)
9
+ SimpleNavigation.stub!(:adapter => @adapter)
10
+ end
11
+
12
+ describe 'initialize' do
13
+ context 'subnavigation' do
14
+ before(:each) do
15
+ @subnav_container = stub(:subnav_container).as_null_object
16
+ SimpleNavigation::ItemContainer.stub!(:new => @subnav_container)
17
+ end
18
+ context 'block given' do
19
+ it "should create a new ItemContainer with a level+1" do
20
+ SimpleNavigation::ItemContainer.should_receive(:new).with(2)
21
+ SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {}) {}
22
+ end
23
+ it "should call the block" do
24
+ @subnav_container.should_receive(:test)
25
+ SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {}) {|subnav| subnav.test}
26
+ end
27
+ end
28
+ context 'no block given' do
29
+ context 'items given' do
30
+ before(:each) do
31
+ @items = stub(:items)
32
+ end
33
+ it "should create a new ItemContainer with a level+1" do
34
+ SimpleNavigation::ItemContainer.should_receive(:new).with(2)
35
+ SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {}, @items)
36
+ end
37
+ it "should set the items on the subnav_container" do
38
+ @subnav_container.should_receive(:items=).with(@items)
39
+ SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {}, @items)
40
+ end
41
+ end
42
+ context 'no items given' do
43
+ it "should not create a new ItemContainer" do
44
+ SimpleNavigation::ItemContainer.should_not_receive(:new)
45
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {})
46
+ end
47
+ end
48
+ end
49
+ end
50
+ context ':method option' do
51
+ context 'defined' do
52
+ before(:each) do
53
+ @options = {:method => :delete}
54
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', @options)
55
+ end
56
+ it 'should set the method as instance_var' do
57
+ @item.method.should == :delete
58
+ end
59
+ it 'should set the html-options without the method' do
60
+ @item.instance_variable_get(:@html_options).key?(:method).should be_false
61
+ end
62
+ end
63
+
64
+ context 'undefined' do
65
+ it 'should set the instance-var to nil' do
66
+ @item.method.should be_nil
67
+ end
68
+ end
69
+ end
70
+
71
+ context 'setting class and id on the container' do
72
+ before(:each) do
73
+ @options = {:container_class => 'container_class', :container_id => 'container_id'}
74
+ end
75
+ it {@item_container.should_receive(:dom_class=).with('container_class')}
76
+ it {@item_container.should_receive(:dom_id=).with('container_id')}
77
+ after(:each) do
78
+ SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', @options)
79
+ end
80
+ end
81
+
82
+ context ':highlights_on option' do
83
+ context 'defined' do
84
+ before(:each) do
85
+ @highlights_on = stub(:option)
86
+ @options = {:highlights_on => @highlights_on}
87
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', @options)
88
+ end
89
+ it 'should set the method as instance_var' do
90
+ @item.highlights_on.should == @highlights_on
91
+ end
92
+ it 'should set the html-options without the method' do
93
+ @item.instance_variable_get(:@html_options).key?(:highlights_on).should be_false
94
+ end
95
+ end
96
+
97
+ context 'undefined' do
98
+ it 'should set the instance-var to nil' do
99
+ @item.highlights_on.should be_nil
100
+ end
101
+ end
102
+ end
103
+
104
+ context 'url' do
105
+ context 'url is a string' do
106
+ before(:each) do
107
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {})
108
+ end
109
+ it {@item.url.should == 'url'}
110
+ end
111
+ context 'url is a proc' do
112
+ before(:each) do
113
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', Proc.new {"my_" + "url"}, {})
114
+ end
115
+ it {@item.url.should == 'my_url'}
116
+ end
117
+ context 'url is nil' do
118
+ before(:each) do
119
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', nil, {})
120
+ end
121
+ it {@item.url.should == nil}
122
+ end
123
+ context 'url is unspecified' do
124
+ before(:each) do
125
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name')
126
+ end
127
+ it {@item.url.should == nil}
128
+ end
129
+ end
130
+
131
+ context 'optional url and optional options' do
132
+ context 'when constructed without any optional parameters' do
133
+ before(:each) do
134
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name')
135
+ end
136
+ it {@item.url.should == nil}
137
+ it {@item.instance_variable_get(:@html_options).should == {}}
138
+ end
139
+ context 'when constructed with only a url' do
140
+ before(:each) do
141
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url')
142
+ end
143
+ it {@item.url.should == 'url'}
144
+ it {@item.instance_variable_get(:@html_options).should == {}}
145
+ end
146
+ context 'when constructed with only options' do
147
+ before(:each) do
148
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', {:option => true})
149
+ end
150
+ it {@item.url.should == nil}
151
+ it {@item.instance_variable_get(:@html_options).should == {:option => true}}
152
+ end
153
+ context 'when constructed with a url and options' do
154
+ before(:each) do
155
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {:option => true})
156
+ end
157
+ it {@item.url.should == 'url'}
158
+ it {@item.instance_variable_get(:@html_options).should == {:option => true}}
159
+ end
160
+ end
161
+ end
162
+
163
+ describe 'name' do
164
+ before(:each) do
165
+ SimpleNavigation.config.stub!(:name_generator => Proc.new {|name| "<span>#{name}</span>"})
166
+ end
167
+ context 'default (generator is applied)' do
168
+ it {@item.name.should == "<span>name</span>"}
169
+ end
170
+ context 'generator is skipped' do
171
+ it {@item.name(:apply_generator => false).should == 'name'}
172
+ end
173
+ end
174
+
175
+ describe 'selected?' do
176
+ context 'explicitly selected' do
177
+ before(:each) do
178
+ @item.stub!(:selected_by_config? => true)
179
+ end
180
+ it {@item.should be_selected}
181
+ it "should not evaluate the subnav or urls" do
182
+ @item.should_not_receive(:selected_by_subnav?)
183
+ @item.should_not_receive(:selected_by_condition?)
184
+ @item.selected?
185
+ end
186
+ end
187
+ context 'not explicitly selected' do
188
+ before(:each) do
189
+ @item.stub!(:selected_by_config? => false)
190
+ end
191
+ context 'subnav is selected' do
192
+ before(:each) do
193
+ @item.stub!(:selected_by_subnav? => true)
194
+ end
195
+ it {@item.should be_selected}
196
+ end
197
+ context 'subnav is not selected' do
198
+ before(:each) do
199
+ @item.stub!(:selected_by_subnav? => false)
200
+ end
201
+ context 'selected by condition' do
202
+ before(:each) do
203
+ @item.stub!(:selected_by_condition? => true)
204
+ end
205
+ it {@item.should be_selected}
206
+ end
207
+ context 'not selected by condition' do
208
+ before(:each) do
209
+ @item.stub!(:selected_by_condition? => false)
210
+ end
211
+ it {@item.should_not be_selected}
212
+ end
213
+ end
214
+ end
215
+ end
216
+
217
+ describe 'selected_class' do
218
+ context 'selected_class is defined in context' do
219
+ before(:each) do
220
+ @item_container = stub(:item_container, :level => 1, :selected_class => 'context_defined').as_null_object
221
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', {})
222
+ @item.stub!(:selected? => true)
223
+ end
224
+ it {@item.instance_eval {selected_class.should == 'context_defined'}}
225
+ end
226
+ context 'item is selected' do
227
+ before(:each) do
228
+ @item.stub!(:selected? => true)
229
+ end
230
+ it {@item.instance_eval {selected_class.should == 'selected'}}
231
+ end
232
+
233
+ context 'item is not selected' do
234
+ before(:each) do
235
+ @item.stub!(:selected? => false)
236
+ end
237
+ it {@item.instance_eval {selected_class.should == nil}}
238
+ end
239
+ end
240
+
241
+ describe 'html_options' do
242
+ describe 'class' do
243
+ context 'with classes defined in options' do
244
+ before(:each) do
245
+ @options = {:class => 'my_class'}
246
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', @options)
247
+ end
248
+ context 'with item selected' do
249
+ before(:each) do
250
+ @item.stub!(:selected? => true, :selected_by_condition? => true)
251
+ end
252
+ it {@item.html_options[:class].should == 'my_class selected simple-navigation-active-leaf'}
253
+ end
254
+
255
+ context 'with item not selected' do
256
+ before(:each) do
257
+ @item.stub!(:selected? => false, :selected_by_condition? => false)
258
+ end
259
+ it {@item.html_options[:class].should == 'my_class'}
260
+ end
261
+ end
262
+
263
+ context 'without classes in options' do
264
+ before(:each) do
265
+ @options = {}
266
+ @item = SimpleNavigation::Item.new(@item_container, :my_key, 'name', 'url', @options)
267
+ end
268
+ context 'with item selected' do
269
+ before(:each) do
270
+ @item.stub!(:selected? => true, :selected_by_condition? => true)
271
+ end
272
+ it {@item.html_options[:class].should == 'selected simple-navigation-active-leaf'}
273
+ end
274
+
275
+ context 'with item not selected' do
276
+ before(:each) do
277
+ @item.stub!(:selected? => false, :selected_by_condition? => false)
278
+ end
279
+ it {@item.html_options[:class].should be_blank}
280
+ end
281
+ end
282
+
283
+ end
284
+
285
+ describe 'id' do
286
+ context 'with autogenerate_item_ids == true' do
287
+ before(:each) do
288
+ @item.stub!(:autogenerate_item_ids? => true)
289
+ @item.stub!(:selected? => false, :selected_by_condition? => false)
290
+ end
291
+ context 'with id defined in options' do
292
+ before(:each) do
293
+ @item.html_options = {:id => 'my_id'}
294
+ end
295
+ it {@item.html_options[:id].should == 'my_id'}
296
+ end
297
+
298
+ context 'with no id defined in options (using default id)' do
299
+ before(:each) do
300
+ @item.html_options = {}
301
+ end
302
+ it {@item.html_options[:id].should == 'my_key'}
303
+ end
304
+ end
305
+
306
+ context 'with autogenerate_item_ids == false' do
307
+ before(:each) do
308
+ @item.stub!(:autogenerate_item_ids? => false)
309
+ @item.stub!(:selected? => false, :selected_by_condition? => false)
310
+ end
311
+ context 'with id defined in options' do
312
+ before(:each) do
313
+ @item.html_options = {:id => 'my_id'}
314
+ end
315
+ it {@item.html_options[:id].should == 'my_id'}
316
+ end
317
+
318
+ context 'with no id definied in options (using default id)' do
319
+ before(:each) do
320
+ @item.html_options = {}
321
+ end
322
+ it {@item.html_options[:id].should be_nil}
323
+ end
324
+
325
+ end
326
+
327
+ end
328
+
329
+ end
330
+
331
+ describe 'selected_by_subnav?' do
332
+ context 'item has subnav' do
333
+ before(:each) do
334
+ @sub_navigation = stub(:sub_navigation)
335
+ @item.stub!(:sub_navigation => @sub_navigation)
336
+ end
337
+ it "should return true if subnav is selected" do
338
+ @sub_navigation.stub!(:selected? => true, :selected_by_condition? => true)
339
+ @item.should be_selected_by_subnav
340
+ end
341
+ it "should return false if subnav is not selected" do
342
+ @sub_navigation.stub!(:selected? => false, :selected_by_condition? => true)
343
+ @item.should_not be_selected_by_subnav
344
+ end
345
+ end
346
+ context 'item does not have subnav' do
347
+ before(:each) do
348
+ @item.stub!(:sub_navigation => @sub_navigation)
349
+ end
350
+ it {@item.should_not be_selected_by_subnav}
351
+ end
352
+ end
353
+
354
+ describe 'selected_by_condition?' do
355
+ context ':highlights_on option is set' do
356
+ before(:each) do
357
+ @item.stub!(:highlights_on => /^\/current/)
358
+ SimpleNavigation.stub!(:request_uri => '/current_url')
359
+ end
360
+ it "should not check for autohighlighting" do
361
+ @item.should_not_receive(:auto_highlight?)
362
+ @item.send(:selected_by_condition?)
363
+ end
364
+ context ':highlights_on is a regexp' do
365
+ context 'regexp matches current_url' do
366
+ it {@item.send(:selected_by_condition?).should be_true}
367
+ end
368
+ context 'regexp does not match current_url' do
369
+ before(:each) do
370
+ @item.stub!(:highlights_on => /^\/no_match/)
371
+ end
372
+ it {@item.send(:selected_by_condition?).should be_false}
373
+ end
374
+ end
375
+ context ':highlights_on is a lambda' do
376
+ context 'truthy lambda results in selection' do
377
+ before(:each) do
378
+ @item.stub!(:highlights_on => lambda{true})
379
+ end
380
+ it {@item.send(:selected_by_condition?).should be_true}
381
+ end
382
+ context 'falsey lambda results in no selection' do
383
+ before(:each) do
384
+ @item.stub!(:highlights_on => lambda{false})
385
+ end
386
+ it {@item.send(:selected_by_condition?).should be_false}
387
+ end
388
+ end
389
+ context ':highlights_on is :subpath' do
390
+ before(:each) do
391
+ @item.stub!(:url => '/resources')
392
+ @item.stub!(:highlights_on => :subpath)
393
+ end
394
+ context 'we are in a route beginning with this item path' do
395
+ before(:each) do
396
+ SimpleNavigation.stub!(:request_uri => '/resources/id')
397
+ end
398
+ it {@item.send(:selected_by_condition?).should be_true}
399
+ end
400
+ context 'we are in a route that has a similar name' do
401
+ before(:each) do
402
+ SimpleNavigation.stub!(:request_uri => '/resources_group/id')
403
+ end
404
+ it {@item.send(:selected_by_condition?).should be_false}
405
+ end
406
+ context 'we are in a route not beginning with this item path' do
407
+ before(:each) do
408
+ SimpleNavigation.stub!(:request_uri => '/another_resource/id')
409
+ end
410
+ it {@item.send(:selected_by_condition?).should be_false}
411
+ end
412
+ end
413
+ context ':highlights_on is not a regexp or a proc' do
414
+ before(:each) do
415
+ @item.stub!(:highlights_on => "not a regexp")
416
+ end
417
+ it "should raise an error" do
418
+ lambda {@item.send(:selected_by_condition?).should raise_error(ArgumentError)}
419
+ end
420
+ end
421
+ end
422
+ context ':highlights_on option is not set' do
423
+ before(:each) do
424
+ @item.stub!(:highlights_on => nil)
425
+ end
426
+ it "should check for autohighlighting" do
427
+ @item.should_receive(:auto_highlight?)
428
+ @item.send(:selected_by_condition?)
429
+ end
430
+ end
431
+ context 'auto_highlight is turned on' do
432
+ before(:each) do
433
+ @item.stub!(:auto_highlight? => true)
434
+ end
435
+ context 'root path matches' do
436
+ before(:each) do
437
+ @item.stub!(:root_path_match? => true)
438
+ end
439
+ it {@item.send(:selected_by_condition?).should be_true}
440
+ end
441
+ context 'root path does not match' do
442
+ before(:each) do
443
+ @item.stub!(:root_path_match? => false)
444
+ end
445
+ context 'current request url matches url' do
446
+ before(:each) do
447
+ @adapter.stub!(:current_page? => true)
448
+ end
449
+ it "should test with the item's url" do
450
+ @adapter.should_receive(:current_page?).with('url')
451
+ @item.send(:selected_by_condition?)
452
+ end
453
+ it "should remove anchors before testing the item's url" do
454
+ @item.stub!(:url => 'url#anchor')
455
+ @adapter.should_receive(:current_page?).with('url')
456
+ @item.send(:selected_by_condition?)
457
+ end
458
+ it "should not be queried when url is nil" do
459
+ @item.stub!(:url => nil)
460
+ @adapter.should_not_receive(:current_page?)
461
+ @item.send(:selected_by_condition?)
462
+ end
463
+ it {@item.send(:selected_by_condition?).should be_true}
464
+ end
465
+ context 'no match' do
466
+ before(:each) do
467
+ @adapter.stub!(:current_page? => false)
468
+ end
469
+ it {@item.send(:selected_by_condition?).should be_false}
470
+ end
471
+ end
472
+ end
473
+ context 'auto_highlight is turned off' do
474
+ before(:each) do
475
+ @item.stub!(:auto_highlight? => false)
476
+ end
477
+ it {@item.send(:selected_by_condition?).should be_false}
478
+ end
479
+ end
480
+
481
+ describe 'root_path_match?' do
482
+ it "should match if both url == /" do
483
+ @adapter.stub!(:request_path => '/')
484
+ @item.stub!(:url => '/')
485
+ @item.send(:root_path_match?).should be_true
486
+ end
487
+ it "should not match if item url is not /" do
488
+ @adapter.stub(:request_path => '/')
489
+ @item.stub!(:url => '/bla')
490
+ @item.send(:root_path_match?).should be_false
491
+ end
492
+ it "should not match if request url is not /" do
493
+ @adapter.stub(:request_path => '/bla')
494
+ @item.stub!(:url => '/')
495
+ @item.send(:root_path_match?).should be_false
496
+ end
497
+ it "should not match if urls do not match" do
498
+ @adapter.stub(:request_path => 'bla')
499
+ @item.stub!(:url => '/bli')
500
+ @item.send(:root_path_match?).should be_false
501
+ end
502
+ it "should not match if url is nil" do
503
+ @adapter.stub(:request_path => 'bla')
504
+ @item.stub!(:url => nil)
505
+ @item.send(:root_path_match?).should be_false
506
+ end
507
+ end
508
+
509
+ describe 'auto_highlight?' do
510
+ before(:each) do
511
+ @global = stub(:config)
512
+ SimpleNavigation.stub!(:config => @global)
513
+ end
514
+ context 'global auto_highlight on' do
515
+ before(:each) do
516
+ @global.stub!(:auto_highlight => true)
517
+ end
518
+ context 'container auto_highlight on' do
519
+ before(:each) do
520
+ @item_container.stub!(:auto_highlight => true)
521
+ end
522
+ it {@item.send(:auto_highlight?).should be_true}
523
+ end
524
+ context 'container auto_highlight off' do
525
+ before(:each) do
526
+ @item_container.stub!(:auto_highlight => false)
527
+ end
528
+ it {@item.send(:auto_highlight?).should be_false}
529
+ end
530
+ end
531
+ context 'global auto_highlight off' do
532
+ before(:each) do
533
+ @global.stub!(:auto_highlight => false)
534
+ end
535
+ context 'container auto_highlight on' do
536
+ before(:each) do
537
+ @item_container.stub!(:auto_highlight => true)
538
+ end
539
+ it {@item.send(:auto_highlight?).should be_false}
540
+ end
541
+ context 'container auto_highlight off' do
542
+ before(:each) do
543
+ @item_container.stub!(:auto_highlight => false)
544
+ end
545
+ it {@item.send(:auto_highlight?).should be_false}
546
+ end
547
+ end
548
+ end
549
+
550
+ describe 'autogenerated_item_id' do
551
+ context 'calls' do
552
+ before(:each) do
553
+ @id_generator = stub(:id_generator)
554
+ SimpleNavigation.config.stub!(:id_generator => @id_generator)
555
+ end
556
+ it "should call the configured generator with the key as param" do
557
+ @id_generator.should_receive(:call).with(:my_key)
558
+ @item.send(:autogenerated_item_id)
559
+ end
560
+ end
561
+ context 'default generator' do
562
+ it {@item.send(:autogenerated_item_id).should == 'my_key'}
563
+ end
564
+ end
565
+
566
+ end