apotomo 1.2.3 → 1.2.4

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 (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -3
  3. data/.travis.yml +6 -8
  4. data/CHANGES.textile +9 -5
  5. data/README.md +211 -0
  6. data/apotomo.gemspec +4 -4
  7. data/config/routes.rb +1 -1
  8. data/gemfiles/Gemfile.rails3-0 +6 -0
  9. data/gemfiles/Gemfile.rails3-1 +6 -0
  10. data/gemfiles/Gemfile.rails3-2 +6 -0
  11. data/gemfiles/Gemfile.rails4-0 +6 -0
  12. data/lib/apotomo/javascript_generator.rb +3 -3
  13. data/lib/apotomo/test_case.rb +14 -8
  14. data/lib/apotomo/version.rb +1 -1
  15. data/lib/apotomo/widget/javascript_methods.rb +3 -3
  16. data/lib/apotomo/widget/tree_node.rb +1 -1
  17. data/lib/apotomo/widget.rb +3 -3
  18. data/lib/generators/apotomo/widget_generator.rb +1 -1
  19. data/lib/generators/templates/view.slim +3 -4
  20. data/test/apotomo_test.rb +25 -14
  21. data/test/dummy/config/routes.rb +2 -57
  22. data/test/event_handler_test.rb +30 -60
  23. data/test/event_methods_test.rb +62 -62
  24. data/test/event_test.rb +11 -11
  25. data/test/invoke_event_handler_test.rb +59 -0
  26. data/test/javascript_generator_test.rb +57 -72
  27. data/test/rails/caching_test.rb +11 -11
  28. data/test/rails/controller_methods_test.rb +63 -57
  29. data/test/rails/rails_integration_test.rb +47 -47
  30. data/test/rails/view_helper_test.rb +31 -26
  31. data/test/rails/widget_generator_test.rb +16 -16
  32. data/test/render_test.rb +50 -50
  33. data/test/request_processor_test.rb +74 -74
  34. data/test/test_case_test.rb +45 -45
  35. data/test/test_helper.rb +14 -10
  36. data/test/tree_node_test.rb +5 -10
  37. data/test/widget_shortcuts_test.rb +25 -25
  38. data/test/widget_test.rb +82 -80
  39. metadata +73 -49
  40. data/README.rdoc +0 -205
  41. data/TODO +0 -36
  42. data/lib/apotomo/proc_event_handler.rb +0 -18
  43. data/test/onfire_integration_test.rb +0 -22
@@ -1,69 +1,39 @@
1
1
  require 'test_helper'
2
- require 'apotomo/proc_event_handler'
3
2
 
4
- class EventHandlerTest < Test::Unit::TestCase
3
+ class EventHandlerTest < MiniTest::Spec
5
4
  include Apotomo::TestCaseMethods::TestController
6
-
7
- context "an abstract EventHandler" do
8
- should "push nil to root's ordered page_updates when #call'ed" do
5
+
6
+ describe "EventHandler" do
7
+ before do
9
8
  @mum = mouse
10
9
  @mum << mouse_mock(:kid)
11
-
12
- assert_equal 0, @mum.page_updates.size
13
-
14
- [@mum, @mum[:kid], @mum].each do |source|
15
- Apotomo::EventHandler.new.call(Apotomo::Event.new(:squeak, source))
10
+ end
11
+
12
+ it "respond to #process_event" do
13
+ h = Apotomo::EventHandler.new
14
+ e = Apotomo::Event.new(:squeak, @mum)
15
+ assert_equal nil, h.process_event(e)
16
+ end
17
+
18
+ describe "#call" do
19
+ it "push #process_events' results ordered to root's #page_updates" do
20
+ [@mum, @mum[:kid], @mum].each_with_index do |source, i|
21
+ e = Apotomo::Event.new(:squeak, source)
22
+ h = Apotomo::EventHandler.new
23
+ h.stub :process_event, "tick#{i}" do
24
+ h.call(e)
25
+ end
26
+ end
27
+
28
+ assert_equal 3, @mum.page_updates.size
29
+ assert_equal "tick0", @mum.page_updates[0]
30
+ assert_equal "tick1", @mum.page_updates[1]
31
+ assert_equal "tick2", @mum.page_updates[2]
32
+ assert_equal 0, @mum[:kid].page_updates.size
16
33
  end
17
-
18
- # order matters:
19
- assert_equal 3, @mum.page_updates.size
20
- assert_equal 0, @mum[:kid].page_updates.size
21
- assert_equal(nil, @mum.page_updates[0])
22
- assert_equal(nil, @mum.page_updates[1])
23
- assert_equal(nil, @mum.page_updates[2])
34
+
35
+ #TODO: handler expect #process_event
24
36
  end
25
37
  end
26
-
27
-
28
-
29
- def test_invoke_to_s
30
- h = Apotomo::InvokeEventHandler.new
31
- h.widget_id = :widget_id
32
- h.state = :my_state
33
- assert_equal "InvokeEventHandler:widget_id#my_state", h.to_s
34
- end
35
-
36
- def test_proc_to_s
37
- h = Apotomo::ProcEventHandler.new
38
- h.proc = :my_method
39
- assert_equal "ProcEventHandler:my_method", h.to_s
40
- end
41
-
42
- def test_constructor_for_proc
43
- h = Apotomo::ProcEventHandler.new
44
- assert_nil h.proc
45
- h = Apotomo::ProcEventHandler.new(:proc => :method)
46
- assert_equal :method, h.proc
47
- end
48
-
49
- def test_constructor_for_invoke
50
- h = Apotomo::InvokeEventHandler.new
51
- assert_nil h.widget_id
52
- assert_nil h.state
53
- h = Apotomo::InvokeEventHandler.new(:widget_id => :widget, :state => :state)
54
- assert_equal :widget, h.widget_id
55
- assert_equal :state, h.state
56
- end
57
-
58
- def test_equal
59
- h1 = Apotomo::ProcEventHandler.new(:proc => :run)
60
- h2 = Apotomo::ProcEventHandler.new(:proc => :run)
61
- h3 = Apotomo::ProcEventHandler.new(:proc => :walk)
62
-
63
- assert h1 == h2
64
- assert h1 != h3
65
- end
66
-
67
- ### TODO: test #call
68
-
38
+
69
39
  end
@@ -1,105 +1,105 @@
1
1
  require 'test_helper'
2
-
3
- class EventMethodsTest < Test::Unit::TestCase
2
+
3
+ class EventMethodsTest < MiniTest::Spec
4
4
  include Apotomo::TestCaseMethods::TestController
5
-
5
+
6
6
  def handler(id, state)
7
7
  Apotomo::InvokeEventHandler.new(:widget_id => id, :state => state)
8
8
  end
9
-
10
-
11
- context "#respond_to_event and #fire" do
12
- setup do
9
+
10
+
11
+ describe "#respond_to_event and #fire" do
12
+ before do
13
13
  mum_and_kid!
14
14
  end
15
-
16
- should "alert @mum first, then make her squeak when @kid squeaks" do
15
+
16
+ it "alert @mum first, then make her squeak when @kid squeaks" do
17
17
  @kid.fire :squeak
18
18
  assert_equal ['be alerted', 'answer squeak'], @mum.list
19
19
  end
20
-
21
- should "make @mum just squeak back when jerry squeaks" do
20
+
21
+ it "make @mum just squeak back when jerry squeaks" do
22
22
  @mum << mouse_mock(:jerry)
23
23
  @mum[:jerry].fire :squeak
24
24
  assert_equal ['answer squeak'], @mum.list
25
25
  end
26
-
27
-
28
- should "make @mum run away while @kid keeps watching" do
26
+
27
+
28
+ it "make @mum run away while @kid keeps watching" do
29
29
  @kid.fire :footsteps
30
30
  assert_equal ['peek', 'escape'], @mum.list
31
31
  end
32
-
33
- should "by default add a handler only once" do
32
+
33
+ it "by default add a handler only once" do
34
34
  @mum.respond_to_event :peep, :with => :answer_squeak
35
35
  @mum.respond_to_event :peep, :with => :answer_squeak
36
36
  @mum.fire :peep
37
37
  assert_equal ['answer squeak'], @mum.list
38
38
  end
39
-
40
- should "squeak back twice when using the :once => false option" do
39
+
40
+ it "squeak back twice when using the :once => false option" do
41
41
  @mum.respond_to_event :peep, :with => :answer_squeak
42
42
  @mum.respond_to_event :peep, :with => :answer_squeak, :once => false
43
43
  @mum.fire :peep
44
44
  assert_equal ['answer squeak', 'answer squeak'], @mum.list
45
45
  end
46
-
47
- should "also accept an event argument only" do
46
+
47
+ it "also accept an event argument only" do
48
48
  @mum.respond_to_event :answer_squeak
49
49
  @mum.fire :answer_squeak
50
50
  assert_equal ['answer squeak'], @mum.list
51
- end
52
-
53
- should "make pass the event into the triggered state" do
51
+ end
52
+
53
+ it "make pass the event into the triggered state" do
54
54
  @mum.instance_eval do
55
55
  respond_to_event :footsteps
56
-
56
+
57
57
  def footsteps(evt)
58
58
  list << evt
59
59
  end
60
60
  end
61
-
61
+
62
62
  @mum.trigger :footsteps, "near"
63
63
  assert_kind_of Apotomo::Event, @mum.list.last
64
64
  end
65
-
66
- should "accept payload data for the event" do
65
+
66
+ it "accept payload data for the event" do
67
67
  @mum.respond_to_event :answer_squeak
68
68
  @mum.instance_eval do
69
69
  def answer_squeak(evt)
70
70
  list << evt.data
71
71
  end
72
72
  end
73
-
73
+
74
74
  @mum.fire :answer_squeak, :volume => 9
75
75
  assert_equal [{:volume => 9}], @mum.list
76
76
  end
77
-
78
-
79
- context "#responds_to_event with :passing" do
80
- setup do
77
+
78
+
79
+ describe "#responds_to_event with :passing" do
80
+ before do
81
81
  class AdolescentMouse < MouseWidget
82
82
  responds_to_event :squeak, :passing => :root
83
83
  end
84
-
84
+
85
85
  @root = mouse(:root)
86
86
  end
87
-
88
- should "add handlers to root when called with :passing" do
87
+
88
+ it "add handlers to root when called with :passing" do
89
89
  AdolescentMouse.new(@root, 'jerry')
90
-
90
+
91
91
  assert_equal [handler('jerry', :squeak)], @root.event_table.all_handlers_for(:squeak, 'jerry')
92
92
  end
93
-
94
- should "inherit :passing handlers" do
93
+
94
+ it "inherit :passing handlers" do
95
95
  Class.new(AdolescentMouse).new(@root, 'jerry')
96
-
96
+
97
97
  assert_equal [handler('jerry', :squeak)], @root.event_table.all_handlers_for(:squeak, 'jerry')
98
98
  end
99
-
99
+
100
100
  end
101
-
102
- context "#responds_to_event in class context" do
101
+
102
+ describe "#responds_to_event in class context" do
103
103
  class AdultMouse < Apotomo::Widget
104
104
  responds_to_event :peep, :with => :answer_squeak
105
105
  end
@@ -107,46 +107,46 @@ class EventMethodsTest < Test::Unit::TestCase
107
107
  responds_to_event :peep
108
108
  responds_to_event :footsteps, :with => :squeak
109
109
  end
110
-
111
- setup do
110
+
111
+ before do
112
112
  @mum = AdultMouse.new(parent_controller, 'mum')
113
113
  end
114
-
115
- should "add the handlers at creation time" do
114
+
115
+ it "add the handlers at creation time" do
116
116
  assert_equal [handler('mum', :answer_squeak)], @mum.event_table.all_handlers_for(:peep, 'mum')
117
117
  end
118
-
119
- should "inherit handlers" do
118
+
119
+ it "inherit handlers" do
120
120
  assert_equal [[:peep, {:with=>:answer_squeak}]], AdultMouse.responds_to_event_options
121
121
  assert_equal [[:peep, {:with=>:answer_squeak}], [:peep], [:footsteps, {:with=>:squeak}]], BabyMouse.responds_to_event_options
122
122
  end
123
-
124
- should "not share responds_to_event options between different instances" do
123
+
124
+ it "not share responds_to_event options between different instances" do
125
125
  assert_equal [handler('mum', :answer_squeak)], @mum.event_table.all_handlers_for(:peep, 'mum')
126
-
126
+
127
127
  assert_equal [handler('dad', :answer_squeak)], AdultMouse.new(parent_controller, 'dad', :show).event_table.all_handlers_for(:peep, 'dad')
128
128
  end
129
129
  end
130
-
131
- context "#trigger" do
132
- should "be an alias for #fire" do
130
+
131
+ describe "#trigger" do
132
+ it "be an alias for #fire" do
133
133
  @kid.trigger :footsteps
134
134
  assert_equal ['peek', 'escape'], @mum.list
135
135
  end
136
136
  end
137
-
138
-
139
- context "page_updates" do
140
- should "expose a simple Array for now" do
137
+
138
+
139
+ describe "page_updates" do
140
+ it "expose a simple Array for now" do
141
141
  assert_kind_of Array, @mum.page_updates
142
142
  assert_equal 0, @mum.page_updates.size
143
143
  end
144
-
145
- should "be queued in root#page_updates after #fire" do
144
+
145
+ it "be queued in root#page_updates after #fire" do
146
146
  @mum.fire :footsteps
147
147
  assert_equal ["escape"], @mum.page_updates
148
148
  end
149
149
  end
150
-
151
- end
150
+
151
+ end
152
152
  end
data/test/event_test.rb CHANGED
@@ -1,26 +1,26 @@
1
1
  require 'test_helper'
2
-
3
- class EventTest < Test::Unit::TestCase
2
+
3
+ class EventTest < MiniTest::Spec
4
4
  include Apotomo::TestCaseMethods::TestController
5
-
6
- context "An Event" do
7
- should "respond to #type and #source" do
5
+
6
+ describe "An Event" do
7
+ it "respond to #type and #source" do
8
8
  @event = Apotomo::Event.new(:footsteps, 'mum')
9
9
  assert_equal :footsteps, @event.type
10
10
  assert_equal 'mum', @event.source
11
11
  end
12
-
13
- should "accept an additional data object and respond to #data" do
12
+
13
+ it "accept an additional data object and respond to #data" do
14
14
  @event = Apotomo::Event.new(:footsteps, 'mum', {:volume => :loud})
15
15
  assert_equal({:volume => :loud}, @event.data)
16
16
  end
17
-
18
- should "delegate #[] to data" do
17
+
18
+ it "delegate #[] to data" do
19
19
  @event = Apotomo::Event.new(:footsteps, 'mum', {:volume => :loud})
20
20
  assert_equal :loud, @event[:volume]
21
21
  end
22
-
23
- should "respond to #to_s" do
22
+
23
+ it "respond to #to_s" do
24
24
  @event = Apotomo::Event.new(:footsteps, mouse('mum'))
25
25
  assert_equal "<Event :footsteps source=mum>", @event.to_s
26
26
  end
@@ -0,0 +1,59 @@
1
+ require 'test_helper'
2
+
3
+ class EventHandlerTest < MiniTest::Spec
4
+ include Apotomo::TestCaseMethods::TestController
5
+
6
+ describe "InvokeEventHandler" do
7
+ describe "constructor" do
8
+ it "accept no arguments" do
9
+ h = Apotomo::InvokeEventHandler.new
10
+ assert_nil h.widget_id
11
+ assert_nil h.state
12
+ end
13
+
14
+ it "accept options" do
15
+ h = Apotomo::InvokeEventHandler.new(:widget_id => :widget, :state => :state)
16
+ assert_equal :widget, h.widget_id
17
+ assert_equal :state, h.state
18
+ end
19
+ end
20
+
21
+ describe "equality methods" do
22
+ it "repond to #==" do
23
+ h1 = Apotomo::InvokeEventHandler.new(:widget_id => :widget, :state => :state)
24
+ h2 = Apotomo::InvokeEventHandler.new(:widget_id => :widget, :state => :state)
25
+
26
+ assert h1 == h2
27
+ assert h2 == h1
28
+ end
29
+
30
+ it "repond to #!=" do
31
+ h1 = Apotomo::InvokeEventHandler.new(:widget_id => :widget, :state => :state)
32
+
33
+ h3 = Apotomo::InvokeEventHandler.new(:widget_id => :another_widget, :state => :state)
34
+ assert h1 != h3
35
+ assert h3 != h1
36
+
37
+ h4 = Apotomo::InvokeEventHandler.new(:widget_id => :widget, :state => :another_state)
38
+ assert h1 != h4
39
+ assert h4 != h1
40
+
41
+ h5 = Apotomo::InvokeEventHandler.new
42
+ assert h1 != h5
43
+ assert h5 != h1
44
+
45
+ # TODO: test InvokeEventHandler == EventHandler
46
+ end
47
+ end
48
+
49
+ it "respond to #to_s" do
50
+ h = Apotomo::InvokeEventHandler.new
51
+ h.widget_id = :widget_id
52
+ h.state = :my_state
53
+ assert_equal "InvokeEventHandler:widget_id#my_state", h.to_s
54
+ end
55
+ end
56
+
57
+ ### TODO: test #process_event
58
+
59
+ end
@@ -1,89 +1,74 @@
1
1
  require 'test_helper'
2
2
 
3
- class JavascriptGeneratorTest < Test::Unit::TestCase
4
- context "The JavascriptGenerator" do
5
- should "raise an error if no framework passed" do
6
- assert_raises RuntimeError do
7
- Apotomo::JavascriptGenerator.new(nil)
8
- end
9
- end
10
-
11
- context "in prototype mode" do
12
- setup do
13
- @gen = Apotomo::JavascriptGenerator.new(:prototype)
14
- end
15
-
16
- should "respond to prototype" do
17
- assert_respond_to @gen, :prototype
18
- end
19
-
20
- should "respond to replace" do
21
- assert_equal "$(\"drinks\").replace(\"EMPTY!\");", @gen.replace(:drinks, 'EMPTY!')
22
- end
23
-
24
- should "respond to replace_id" do
25
- assert_equal "$(\"drinks\").replace(\"EMPTY!\");", @gen.replace_id("drinks", 'EMPTY!')
26
- end
27
-
28
- should "respond to update" do
29
- assert_equal "$(\"drinks\").update(\"<li id=\\\"beer\\\"><\\/li>\");", @gen.update(:drinks, '<li id="beer"></li>')
3
+ class JavascriptGeneratorTest < MiniTest::Spec
4
+ describe "The JavascriptGenerator" do
5
+ describe "constructor" do
6
+ it "accept framework name and return an correct instance" do
7
+ @gen = Apotomo::JavascriptGenerator.new(:Jquery)
8
+
9
+ assert_kind_of Apotomo::JavascriptGenerator, @gen
10
+ assert_kind_of Apotomo::JavascriptGenerator::Jquery, @gen
30
11
  end
31
-
32
- should "respond to update_id" do
33
- assert_equal "$(\"drinks\").update(\"EMPTY!\");", @gen.update_id("drinks", 'EMPTY!')
12
+
13
+ it "raise an error if no framework passed" do
14
+ assert_raises RuntimeError do
15
+ Apotomo::JavascriptGenerator.new(nil)
16
+ end
34
17
  end
35
18
  end
36
-
37
- context "in right mode" do
38
- setup do
39
- @gen = Apotomo::JavascriptGenerator.new(:right)
40
- end
41
-
42
- should "respond to right" do
43
- assert_respond_to @gen, :right
44
- end
45
-
46
- should "respond to replace" do
47
- assert_equal "$(\"drinks\").replace(\"EMPTY!\");", @gen.replace(:drinks, 'EMPTY!')
48
- end
49
-
50
- should "respond to replace_id" do
51
- assert_equal "$(\"drinks\").replace(\"EMPTY!\");", @gen.replace_id("drinks", 'EMPTY!')
52
- end
53
-
54
- should "respond to update" do
55
- assert_equal "$(\"drinks\").update(\"<li id=\\\"beer\\\"><\\/li>\");", @gen.update(:drinks, '<li id="beer"></li>')
19
+
20
+ it "respond to ::escape" do
21
+ assert_equal '', Apotomo::JavascriptGenerator.escape(nil)
22
+ assert_equal %(This \\"thing\\" is really\\n netos\\'), Apotomo::JavascriptGenerator.escape(%(This "thing" is really\n netos'))
23
+ assert_equal %(backslash\\\\test), Apotomo::JavascriptGenerator.escape(%(backslash\\test))
24
+ assert_equal %(dont <\\/close> tags), Apotomo::JavascriptGenerator.escape(%(dont </close> tags))
25
+ end
26
+
27
+ describe "in jQuery mode" do
28
+ before do
29
+ @gen = Apotomo::JavascriptGenerator.new(:Jquery)
56
30
  end
57
-
58
- should "respond to update_id" do
59
- assert_equal "$(\"drinks\").update(\"EMPTY!\");", @gen.update_id("drinks", 'EMPTY!')
31
+
32
+ it "respond to #escape" do
33
+ assert_equal '', @gen.escape(nil)
34
+ assert_equal %(This \\"thing\\" is really\\n netos\\'), @gen.escape(%(This "thing" is really\n netos'))
35
+ assert_equal %(backslash\\\\test), @gen.escape(%(backslash\\test))
36
+ assert_equal %(dont <\\/close> tags), @gen.escape(%(dont </close> tags))
60
37
  end
61
- end
62
-
63
- context "in jquery mode" do
64
- setup do
65
- @gen = Apotomo::JavascriptGenerator.new(:jquery)
38
+
39
+ it "respond to #<< and return argument converted to String" do
40
+ assert_equal "bla_bla", (@gen << "bla_bla")
41
+ assert_equal "bla_bla", (@gen << :bla_bla)
66
42
  end
67
-
68
- should "respond to jquery" do
43
+
44
+ it "respond to #jquery" do
69
45
  assert_respond_to @gen, :jquery
70
46
  end
71
-
72
- should "respond to replace" do
73
- assert_equal "$(\"#drinks\").replaceWith(\"EMPTY!\");", @gen.replace("#drinks", 'EMPTY!')
47
+
48
+ it "respond to #element" do
49
+ assert_equal "jQuery(\"#drinks\")", @gen.element("#drinks")
50
+ end
51
+
52
+ it "respond to #replace" do
53
+ assert_equal "jQuery(\"#drinks\").replaceWith(\"EMPTY!\");", @gen.replace("#drinks", 'EMPTY!')
74
54
  end
75
-
76
- should "respond to replace_id" do
77
- assert_equal "$(\"#drinks\").replaceWith(\"EMPTY!\");", @gen.replace_id("drinks", 'EMPTY!')
55
+
56
+ it "respond to #replace_id" do
57
+ assert_equal "jQuery(\"#drinks\").replaceWith(\"EMPTY!\");", @gen.replace_id("drinks", 'EMPTY!')
78
58
  end
79
-
80
- should "respond to update" do
81
- assert_equal "$(\"#drinks\").html(\"<li id=\\\"beer\\\"><\\/li>\");", @gen.update("#drinks", '<li id="beer"></li>')
59
+
60
+ it "respond to #update" do
61
+ assert_equal "jQuery(\"#drinks\").html(\"<li id=\\\"beer\\\"><\\/li>\");", @gen.update("#drinks", '<li id="beer"></li>')
82
62
  end
83
-
84
- should "respond to update_id" do
85
- assert_equal "$(\"#drinks\").html(\"EMPTY!\");", @gen.update_id("drinks", 'EMPTY!')
63
+
64
+ it "respond to #update_id" do
65
+ assert_equal "jQuery(\"#drinks\").html(\"EMPTY!\");", @gen.update_id("drinks", 'EMPTY!')
86
66
  end
67
+
68
+ # TODO: Prototype mode
69
+
70
+ # TODO: Right mode
71
+
87
72
  end
88
73
  end
89
74
  end
@@ -2,28 +2,28 @@ require 'test_helper'
2
2
 
3
3
  # TODO: assert that same-named cells and widgets don't overwrite their caches.
4
4
 
5
- class CachingTest < ActiveSupport::TestCase
5
+ class CachingTest < MiniTest::Spec
6
6
  include Apotomo::TestCaseMethods::TestController
7
-
7
+
8
8
  class CheeseWidget < Apotomo::Widget
9
9
  cache :holes
10
-
10
+
11
11
  def holes(count)
12
12
  render :text => count
13
- end
13
+ end
14
14
  end
15
-
16
- context "A caching widget" do
17
- setup do
15
+
16
+ describe "A caching widget" do
17
+ before do
18
18
  ActionController::Base.perform_caching = true
19
19
  @cheese = CheeseWidget.new(parent_controller, 'cheese', :holes)
20
20
  end
21
-
22
- teardown do
21
+
22
+ after do
23
23
  ActionController::Base.perform_caching = false
24
24
  end
25
-
26
- should "invoke the cached state only once" do
25
+
26
+ it "invoke the cached state only once" do
27
27
  assert_equal "1", @cheese.invoke(:holes, 1)
28
28
  assert_equal "1", @cheese.invoke(:holes, 2)
29
29
  end