rr 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,6 @@
1
+ * 0.2.3
2
+ - Added InstanceMethods#rr_verify and InstanceMethods#rr_reset
3
+
1
4
  * 0.2.2
2
5
  - Fixed "singleton method bound for a different object"
3
6
  - Doing Method aliasing again to store original method
data/README CHANGED
@@ -18,21 +18,37 @@ http://xunitpatterns.com/Test%20Stub.html
18
18
  stub(User).find('42') {jane}
19
19
  mock(jane).valid? {true}
20
20
 
21
- == Probing
21
+ == Mock Probing
22
22
  Add verifications that a method was called while actually calling it.
23
23
  The following example verifies render partial will be called and
24
24
  renders the partial.
25
25
 
26
26
  view = controller.template
27
27
  probe(view).render(:partial => "user_info")
28
+ # or mock_probe.render(:partial => "user_info")
28
29
 
29
30
  Probes also support after_call callbacks. This is useful for Stubbing out
30
- a class method and getting its return value. For example, using ActiveRecord:
31
+ a class method and getting its return value. You can also change the return value.
32
+ This technique is also useful for verifying that you are mocking exists and
33
+ functions proberly, thereby testing you interface.
34
+ For example, using ActiveRecord:
31
35
 
32
36
  probe(User).find('5') do |user|
33
37
  mock(user).valid? {false}
38
+ user
34
39
  end
35
-
40
+
41
+ == Mock Stubbing
42
+ Intercept the return value of a method call.
43
+ The following example verifies render partial will be called and
44
+ renders the partial.
45
+
46
+ view = controller.template
47
+ stub_probe(view).render(:partial => "user_info") do |html|
48
+ html.should include("Joe Smith")
49
+ html
50
+ end
51
+
36
52
  == Block Syntax
37
53
  script = MyScript.new
38
54
  mock(script) do |m|
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ def run_suite
21
21
  end
22
22
 
23
23
  PKG_NAME = "rr"
24
- PKG_VERSION = "0.2.2"
24
+ PKG_VERSION = "0.2.3"
25
25
  PKG_FILES = FileList[
26
26
  '[A-Z]*',
27
27
  '*.rb',
@@ -0,0 +1,122 @@
1
+ require "examples/example_helper"
2
+
3
+ module RR
4
+ module Extensions
5
+ describe InstanceMethods, " space example", :shared => true do
6
+ it_should_behave_like "RR::Extensions::InstanceMethods"
7
+ before do
8
+ @old_space = Space.instance
9
+
10
+ @space = Space.new
11
+ Space.instance = @space
12
+ @object1 = Object.new
13
+ @object2 = Object.new
14
+ @method_name = :foobar
15
+ end
16
+
17
+ after do
18
+ Space.instance = @old_space
19
+ end
20
+ end
21
+
22
+ describe InstanceMethods, "#verify" do
23
+ it_should_behave_like "RR::Extensions::InstanceMethods space example"
24
+
25
+ it "#verify verifies and deletes the doubles" do
26
+ should verify_all_doubles {verify}
27
+ end
28
+
29
+ it "#rr_verify verifies and deletes the doubles" do
30
+ should verify_all_doubles {rr_verify}
31
+ end
32
+
33
+ def verify_all_doubles
34
+ double1 = @space.create_double(@object1, @method_name)
35
+ double1_verify_calls = 0
36
+ double1_reset_calls = 0
37
+ (class << double1; self; end).class_eval do
38
+ define_method(:verify) do ||
39
+ double1_verify_calls += 1
40
+ end
41
+ define_method(:reset) do ||
42
+ double1_reset_calls += 1
43
+ end
44
+ end
45
+ double2 = @space.create_double(@object2, @method_name)
46
+ double2_verify_calls = 0
47
+ double2_reset_calls = 0
48
+ (class << double2; self; end).class_eval do
49
+ define_method(:verify) do ||
50
+ double2_verify_calls += 1
51
+ end
52
+ define_method(:reset) do ||
53
+ double2_reset_calls += 1
54
+ end
55
+ end
56
+
57
+ yield
58
+ double1_verify_calls.should == 1
59
+ double2_verify_calls.should == 1
60
+ double1_reset_calls.should == 1
61
+ double1_reset_calls.should == 1
62
+ end
63
+ end
64
+
65
+ describe InstanceMethods, "#reset" do
66
+ it_should_behave_like "RR::Extensions::InstanceMethods space example"
67
+
68
+ it "#reset removes the ordered scenarios" do
69
+ should remove_ordered_scenarios {reset}
70
+ end
71
+
72
+ it "#rr_reset removes the ordered scenarios" do
73
+ should remove_ordered_scenarios {rr_reset}
74
+ end
75
+
76
+ it "#reset resets all doubles" do
77
+ should reset_all_doubles {reset}
78
+ end
79
+
80
+ it "#rr_reset resets all doubles" do
81
+ should reset_all_doubles {rr_reset}
82
+ end
83
+
84
+ def remove_ordered_scenarios
85
+ double1 = @space.create_double(@object1, :foobar1)
86
+ double2 = @space.create_double(@object1, :foobar2)
87
+
88
+ scenario1 = @space.create_scenario(double1)
89
+ scenario2 = @space.create_scenario(double2)
90
+
91
+ scenario1.ordered
92
+ scenario2.ordered
93
+
94
+ @space.ordered_scenarios.should_not be_empty
95
+
96
+ yield
97
+ @space.ordered_scenarios.should be_empty
98
+ end
99
+
100
+ def reset_all_doubles
101
+ double1 = @space.create_double(@object1, @method_name)
102
+ double1_reset_calls = 0
103
+ (class << double1; self; end).class_eval do
104
+ define_method(:reset) do ||
105
+ double1_reset_calls += 1
106
+ end
107
+ end
108
+ double2 = @space.create_double(@object2, @method_name)
109
+ double2_reset_calls = 0
110
+ (class << double2; self; end).class_eval do
111
+ define_method(:reset) do ||
112
+ double2_reset_calls += 1
113
+ end
114
+ end
115
+
116
+ yield
117
+ double1_reset_calls.should == 1
118
+ double2_reset_calls.should == 1
119
+ end
120
+ end
121
+ end
122
+ end
@@ -6,13 +6,13 @@ module RR
6
6
  module Rspec
7
7
  include RR::Extensions::InstanceMethods
8
8
  def setup_mocks_for_rspec
9
- RR::Space.instance.reset
9
+ rr_reset
10
10
  end
11
11
  def verify_mocks_for_rspec
12
- RR::Space.instance.verify_doubles
12
+ rr_verify
13
13
  end
14
14
  def teardown_mocks_for_rspec
15
- RR::Space.instance.reset
15
+ rr_reset
16
16
  end
17
17
  end
18
18
  end
@@ -9,13 +9,13 @@ module RR
9
9
  alias_method :setup_without_rr, :setup
10
10
  def setup_with_rr
11
11
  setup_without_rr
12
- RR::Space.instance.reset
12
+ rr_reset
13
13
  end
14
14
  alias_method :setup, :setup_with_rr
15
15
 
16
16
  alias_method :teardown_without_rr, :teardown
17
17
  def teardown_with_rr
18
- RR::Space.instance.verify_doubles
18
+ rr_verify
19
19
  teardown_without_rr
20
20
  end
21
21
  alias_method :teardown, :teardown_with_rr
@@ -1,6 +1,17 @@
1
1
  module RR
2
2
  module Extensions
3
3
  module InstanceMethods
4
+ # Verifies all the Double objects have met their
5
+ # TimesCalledExpectations.
6
+ def verify
7
+ RR::Space.instance.verify_doubles
8
+ end
9
+
10
+ # Resets the registered Doubles and ordered Scenarios
11
+ def reset
12
+ RR::Space.instance.reset
13
+ end
14
+
4
15
  # Sets up a MockCreator that generates a Double Scenario that
5
16
  # acts like a mock.
6
17
  # mock(object).method_name(arg1, arg2) {return_value}
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.3
2
+ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: rr
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.2
7
- date: 2007-07-17 00:00:00 -07:00
6
+ version: 0.2.3
7
+ date: 2007-07-18 00:00:00 -07:00
8
8
  summary: RR (Double Ruby) is a double framework that features a rich selection of double techniques and a terse syntax. http://xunitpatterns.com/Test%20Double.html
9
9
  require_paths:
10
10
  - lib
@@ -29,106 +29,107 @@ post_install_message:
29
29
  authors:
30
30
  - Brian Takita
31
31
  files:
32
+ - README
32
33
  - Rakefile
33
34
  - CHANGES
34
- - README
35
- - lib/rr.rb
36
- - lib/rr/mock_probe_creator.rb
37
- - lib/rr/scenario.rb
38
- - lib/rr/creator.rb
39
- - lib/rr/stub_probe_creator.rb
40
- - lib/rr/scenario_matches.rb
41
- - lib/rr/stub_creator.rb
42
- - lib/rr/space.rb
43
- - lib/rr/double.rb
44
- - lib/rr/do_not_allow_creator.rb
45
- - lib/rr/mock_creator.rb
46
- - lib/rr/times_called_matchers/any_times_matcher.rb
47
- - lib/rr/times_called_matchers/at_most_matcher.rb
48
- - lib/rr/times_called_matchers/times_called_matcher.rb
49
- - lib/rr/times_called_matchers/at_least_matcher.rb
50
- - lib/rr/times_called_matchers/proc_matcher.rb
51
- - lib/rr/times_called_matchers/integer_matcher.rb
52
- - lib/rr/times_called_matchers/non_terminal.rb
53
- - lib/rr/times_called_matchers/terminal.rb
54
- - lib/rr/times_called_matchers/range_matcher.rb
35
+ - lib/rr/extensions/instance_methods.rb
36
+ - lib/rr/adapters/test_unit.rb
37
+ - lib/rr/adapters/rspec.rb
55
38
  - lib/rr/expectations/argument_equality_expectation.rb
56
39
  - lib/rr/expectations/times_called_expectation.rb
57
40
  - lib/rr/expectations/any_argument_expectation.rb
41
+ - lib/rr/scenario.rb
42
+ - lib/rr/stub_creator.rb
43
+ - lib/rr/errors/times_called_error.rb
58
44
  - lib/rr/errors/scenario_not_found_error.rb
59
- - lib/rr/errors/argument_equality_error.rb
60
45
  - lib/rr/errors/scenario_order_error.rb
46
+ - lib/rr/errors/argument_equality_error.rb
61
47
  - lib/rr/errors/rr_error.rb
62
- - lib/rr/errors/times_called_error.rb
63
- - lib/rr/adapters/test_unit.rb
64
- - lib/rr/adapters/rspec.rb
48
+ - lib/rr/do_not_allow_creator.rb
49
+ - lib/rr/mock_creator.rb
50
+ - lib/rr/double.rb
51
+ - lib/rr/space.rb
52
+ - lib/rr/creator.rb
65
53
  - lib/rr/wildcard_matchers/boolean.rb
54
+ - lib/rr/wildcard_matchers/anything.rb
55
+ - lib/rr/wildcard_matchers/numeric.rb
66
56
  - lib/rr/wildcard_matchers/duck_type.rb
67
- - lib/rr/wildcard_matchers/range.rb
68
57
  - lib/rr/wildcard_matchers/regexp.rb
69
- - lib/rr/wildcard_matchers/numeric.rb
70
58
  - lib/rr/wildcard_matchers/is_a.rb
71
- - lib/rr/wildcard_matchers/anything.rb
72
- - lib/rr/extensions/instance_methods.rb
73
- - examples/environment_fixture_setup.rb
74
- - examples/rspec_example_suite.rb
75
- - examples/example_suite.rb
76
- - examples/example_helper.rb
77
- - examples/test_unit_example_suite.rb
78
- - examples/high_level_example.rb
79
- - examples/rr/stub_probe_creator_example.rb
80
- - examples/rr/mock_creator_example.rb
81
- - examples/rr/stub_creator_example.rb
82
- - examples/rr/scenario_example.rb
83
- - examples/rr/do_not_allow_creator_example.rb
84
- - examples/rr/mock_probe_creator_example.rb
85
- - examples/rr/rspec/rspec_backtrace_tweaking_example.rb
86
- - examples/rr/rspec/rspec_adapter_example.rb
87
- - examples/rr/rspec/rspec_usage_example.rb
88
- - examples/rr/times_called_matchers/at_most_matcher_example.rb
89
- - examples/rr/times_called_matchers/at_least_matcher_example.rb
90
- - examples/rr/times_called_matchers/times_called_matcher_example.rb
91
- - examples/rr/times_called_matchers/range_matcher_example.rb
92
- - examples/rr/times_called_matchers/proc_matcher_example.rb
93
- - examples/rr/times_called_matchers/any_times_matcher_example.rb
94
- - examples/rr/times_called_matchers/integer_matcher_example.rb
95
- - examples/rr/space/space_verify_example.rb
96
- - examples/rr/space/space_reset_example.rb
97
- - examples/rr/space/space_create_example.rb
98
- - examples/rr/space/space_helper.rb
99
- - examples/rr/space/space_example.rb
100
- - examples/rr/space/space_register_example.rb
101
- - examples/rr/expectations/is_a_argument_equality_expectation_example.rb
102
- - examples/rr/expectations/any_argument_expectation_example.rb
103
- - examples/rr/expectations/regexp_argument_equality_expectation_example.rb
104
- - examples/rr/expectations/boolean_argument_equality_expectation_example.rb
105
- - examples/rr/expectations/duck_type_argument_equality_expectation_example.rb
106
- - examples/rr/expectations/numeric_argument_equality_expectation_example.rb
107
- - examples/rr/expectations/range_argument_equality_expectation_example.rb
59
+ - lib/rr/wildcard_matchers/range.rb
60
+ - lib/rr/times_called_matchers/at_least_matcher.rb
61
+ - lib/rr/times_called_matchers/range_matcher.rb
62
+ - lib/rr/times_called_matchers/integer_matcher.rb
63
+ - lib/rr/times_called_matchers/non_terminal.rb
64
+ - lib/rr/times_called_matchers/proc_matcher.rb
65
+ - lib/rr/times_called_matchers/times_called_matcher.rb
66
+ - lib/rr/times_called_matchers/at_most_matcher.rb
67
+ - lib/rr/times_called_matchers/any_times_matcher.rb
68
+ - lib/rr/times_called_matchers/terminal.rb
69
+ - lib/rr/stub_probe_creator.rb
70
+ - lib/rr/mock_probe_creator.rb
71
+ - lib/rr/scenario_matches.rb
72
+ - lib/rr.rb
73
+ - examples/rr/extensions/instance_methods_creator_example.rb
74
+ - examples/rr/extensions/instance_methods_example_helper.rb
75
+ - examples/rr/extensions/instance_methods_times_matcher_example.rb
76
+ - examples/rr/extensions/instance_methods_argument_matcher_example.rb
77
+ - examples/rr/extensions/instance_methods_space_example.rb
108
78
  - examples/rr/expectations/argument_equality_expectation_example.rb
109
79
  - examples/rr/expectations/anything_argument_equality_expectation_example.rb
80
+ - examples/rr/expectations/times_called_expectation/times_called_expectation_at_least_example.rb
81
+ - examples/rr/expectations/times_called_expectation/times_called_expectation_range_example.rb
110
82
  - examples/rr/expectations/times_called_expectation/times_called_expectation_integer_example.rb
111
- - examples/rr/expectations/times_called_expectation/times_called_expectation_any_times_example.rb
112
- - examples/rr/expectations/times_called_expectation/times_called_expectation_helper.rb
113
- - examples/rr/expectations/times_called_expectation/times_called_expectation_proc_example.rb
114
83
  - examples/rr/expectations/times_called_expectation/times_called_expectation_example.rb
115
- - examples/rr/expectations/times_called_expectation/times_called_expectation_at_least_example.rb
84
+ - examples/rr/expectations/times_called_expectation/times_called_expectation_proc_example.rb
85
+ - examples/rr/expectations/times_called_expectation/times_called_expectation_helper.rb
116
86
  - examples/rr/expectations/times_called_expectation/times_called_expectation_at_most_example.rb
117
- - examples/rr/expectations/times_called_expectation/times_called_expectation_range_example.rb
118
- - examples/rr/errors/rr_error_example.rb
119
- - examples/rr/double/double_reset_example.rb
87
+ - examples/rr/expectations/times_called_expectation/times_called_expectation_any_times_example.rb
88
+ - examples/rr/expectations/any_argument_expectation_example.rb
89
+ - examples/rr/expectations/is_a_argument_equality_expectation_example.rb
90
+ - examples/rr/expectations/numeric_argument_equality_expectation_example.rb
91
+ - examples/rr/expectations/boolean_argument_equality_expectation_example.rb
92
+ - examples/rr/expectations/duck_type_argument_equality_expectation_example.rb
93
+ - examples/rr/expectations/regexp_argument_equality_expectation_example.rb
94
+ - examples/rr/expectations/range_argument_equality_expectation_example.rb
95
+ - examples/rr/rspec/rspec_adapter_example.rb
96
+ - examples/rr/rspec/rspec_usage_example.rb
97
+ - examples/rr/rspec/rspec_backtrace_tweaking_example.rb
98
+ - examples/rr/test_unit/test_helper.rb
99
+ - examples/rr/test_unit/test_unit_integration_test.rb
100
+ - examples/rr/test_unit/test_unit_backtrace_test.rb
101
+ - examples/rr/scenario_example.rb
120
102
  - examples/rr/double/double_bind_example.rb
121
- - examples/rr/double/double_register_scenario_example.rb
122
- - examples/rr/double/double_example.rb
123
103
  - examples/rr/double/double_dispatching_example.rb
104
+ - examples/rr/double/double_example.rb
105
+ - examples/rr/double/double_reset_example.rb
124
106
  - examples/rr/double/double_verify_example.rb
125
- - examples/rr/test_unit/test_unit_backtrace_test.rb
126
- - examples/rr/test_unit/test_helper.rb
127
- - examples/rr/test_unit/test_unit_integration_test.rb
128
- - examples/rr/extensions/instance_methods_argument_matcher_example.rb
129
- - examples/rr/extensions/instance_methods_times_matcher_example.rb
130
- - examples/rr/extensions/instance_methods_creator_example.rb
131
- - examples/rr/extensions/instance_methods_example_helper.rb
107
+ - examples/rr/double/double_register_scenario_example.rb
108
+ - examples/rr/space/space_example.rb
109
+ - examples/rr/space/space_reset_example.rb
110
+ - examples/rr/space/space_create_example.rb
111
+ - examples/rr/space/space_helper.rb
112
+ - examples/rr/space/space_register_example.rb
113
+ - examples/rr/space/space_verify_example.rb
114
+ - examples/rr/mock_creator_example.rb
115
+ - examples/rr/times_called_matchers/proc_matcher_example.rb
116
+ - examples/rr/times_called_matchers/times_called_matcher_example.rb
117
+ - examples/rr/times_called_matchers/at_most_matcher_example.rb
118
+ - examples/rr/times_called_matchers/any_times_matcher_example.rb
119
+ - examples/rr/times_called_matchers/at_least_matcher_example.rb
120
+ - examples/rr/times_called_matchers/range_matcher_example.rb
121
+ - examples/rr/times_called_matchers/integer_matcher_example.rb
122
+ - examples/rr/stub_probe_creator_example.rb
123
+ - examples/rr/stub_creator_example.rb
124
+ - examples/rr/do_not_allow_creator_example.rb
125
+ - examples/rr/mock_probe_creator_example.rb
126
+ - examples/rr/errors/rr_error_example.rb
127
+ - examples/rspec_example_suite.rb
128
+ - examples/high_level_example.rb
129
+ - examples/test_unit_example_suite.rb
130
+ - examples/example_suite.rb
131
+ - examples/environment_fixture_setup.rb
132
+ - examples/example_helper.rb
132
133
  test_files: []
133
134
 
134
135
  rdoc_options: