mocha-macruby 0.9.8.20100129120100
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.
- data/COPYING +3 -0
- data/MIT-LICENSE +7 -0
- data/README +39 -0
- data/RELEASE +294 -0
- data/Rakefile +214 -0
- data/examples/misc.rb +43 -0
- data/examples/mocha.rb +25 -0
- data/examples/stubba.rb +64 -0
- data/lib/mocha.rb +3 -0
- data/lib/mocha/any_instance_method.rb +59 -0
- data/lib/mocha/api.rb +173 -0
- data/lib/mocha/argument_iterator.rb +21 -0
- data/lib/mocha/backtrace_filter.rb +17 -0
- data/lib/mocha/cardinality.rb +95 -0
- data/lib/mocha/central.rb +27 -0
- data/lib/mocha/change_state_side_effect.rb +19 -0
- data/lib/mocha/class_method.rb +117 -0
- data/lib/mocha/configuration.rb +79 -0
- data/lib/mocha/deprecation.rb +22 -0
- data/lib/mocha/exception_raiser.rb +17 -0
- data/lib/mocha/expectation.rb +476 -0
- data/lib/mocha/expectation_error.rb +15 -0
- data/lib/mocha/expectation_list.rb +50 -0
- data/lib/mocha/in_state_ordering_constraint.rb +19 -0
- data/lib/mocha/inspect.rb +67 -0
- data/lib/mocha/instance_method.rb +16 -0
- data/lib/mocha/integration.rb +38 -0
- data/lib/mocha/integration/mini_test.rb +21 -0
- data/lib/mocha/integration/mini_test/assertion_counter.rb +23 -0
- data/lib/mocha/integration/mini_test/version_131_and_above.rb +50 -0
- data/lib/mocha/integration/test_unit.rb +40 -0
- data/lib/mocha/integration/test_unit/assertion_counter.rb +23 -0
- data/lib/mocha/integration/test_unit/gem_version_200.rb +49 -0
- data/lib/mocha/integration/test_unit/gem_version_201_and_above.rb +49 -0
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +48 -0
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +50 -0
- data/lib/mocha/is_a.rb +9 -0
- data/lib/mocha/logger.rb +15 -0
- data/lib/mocha/metaclass.rb +13 -0
- data/lib/mocha/method_matcher.rb +21 -0
- data/lib/mocha/mock.rb +200 -0
- data/lib/mocha/mockery.rb +181 -0
- data/lib/mocha/module_method.rb +16 -0
- data/lib/mocha/multiple_yields.rb +20 -0
- data/lib/mocha/names.rb +53 -0
- data/lib/mocha/no_yields.rb +11 -0
- data/lib/mocha/object.rb +187 -0
- data/lib/mocha/parameter_matchers.rb +27 -0
- data/lib/mocha/parameter_matchers/all_of.rb +42 -0
- data/lib/mocha/parameter_matchers/any_of.rb +47 -0
- data/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
- data/lib/mocha/parameter_matchers/anything.rb +33 -0
- data/lib/mocha/parameter_matchers/base.rb +15 -0
- data/lib/mocha/parameter_matchers/equals.rb +42 -0
- data/lib/mocha/parameter_matchers/has_entries.rb +45 -0
- data/lib/mocha/parameter_matchers/has_entry.rb +57 -0
- data/lib/mocha/parameter_matchers/has_key.rb +43 -0
- data/lib/mocha/parameter_matchers/has_value.rb +43 -0
- data/lib/mocha/parameter_matchers/includes.rb +41 -0
- data/lib/mocha/parameter_matchers/instance_of.rb +42 -0
- data/lib/mocha/parameter_matchers/is_a.rb +42 -0
- data/lib/mocha/parameter_matchers/kind_of.rb +42 -0
- data/lib/mocha/parameter_matchers/not.rb +42 -0
- data/lib/mocha/parameter_matchers/object.rb +15 -0
- data/lib/mocha/parameter_matchers/optionally.rb +55 -0
- data/lib/mocha/parameter_matchers/regexp_matches.rb +44 -0
- data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
- data/lib/mocha/parameters_matcher.rb +37 -0
- data/lib/mocha/pretty_parameters.rb +28 -0
- data/lib/mocha/return_values.rb +31 -0
- data/lib/mocha/sequence.rb +42 -0
- data/lib/mocha/single_return_value.rb +17 -0
- data/lib/mocha/single_yield.rb +18 -0
- data/lib/mocha/standalone.rb +1 -0
- data/lib/mocha/state_machine.rb +91 -0
- data/lib/mocha/stubbing_error.rb +16 -0
- data/lib/mocha/unexpected_invocation.rb +18 -0
- data/lib/mocha/yield_parameters.rb +31 -0
- data/lib/mocha_standalone.rb +2 -0
- data/lib/stubba.rb +4 -0
- data/test/acceptance/acceptance_test_helper.rb +38 -0
- data/test/acceptance/api_test.rb +139 -0
- data/test/acceptance/bug_18914_test.rb +43 -0
- data/test/acceptance/bug_21465_test.rb +34 -0
- data/test/acceptance/bug_21563_test.rb +25 -0
- data/test/acceptance/expected_invocation_count_test.rb +196 -0
- data/test/acceptance/failure_messages_test.rb +64 -0
- data/test/acceptance/minitest_test.rb +153 -0
- data/test/acceptance/mocha_example_test.rb +98 -0
- data/test/acceptance/mocha_test_result_test.rb +84 -0
- data/test/acceptance/mock_test.rb +100 -0
- data/test/acceptance/mock_with_initializer_block_test.rb +51 -0
- data/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
- data/test/acceptance/optional_parameters_test.rb +70 -0
- data/test/acceptance/parameter_matcher_test.rb +209 -0
- data/test/acceptance/partial_mocks_test.rb +47 -0
- data/test/acceptance/return_value_test.rb +52 -0
- data/test/acceptance/sequence_test.rb +186 -0
- data/test/acceptance/states_test.rb +70 -0
- data/test/acceptance/stub_any_instance_method_test.rb +195 -0
- data/test/acceptance/stub_class_method_test.rb +203 -0
- data/test/acceptance/stub_everything_test.rb +56 -0
- data/test/acceptance/stub_instance_method_test.rb +203 -0
- data/test/acceptance/stub_module_method_test.rb +163 -0
- data/test/acceptance/stub_test.rb +52 -0
- data/test/acceptance/stubba_example_test.rb +102 -0
- data/test/acceptance/stubba_test.rb +15 -0
- data/test/acceptance/stubba_test_result_test.rb +66 -0
- data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +157 -0
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +147 -0
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_public_class_method_test.rb +163 -0
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +143 -0
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
- data/test/deprecation_disabler.rb +15 -0
- data/test/execution_point.rb +36 -0
- data/test/method_definer.rb +24 -0
- data/test/simple_counter.rb +13 -0
- data/test/test_helper.rb +25 -0
- data/test/test_runner.rb +33 -0
- data/test/unit/any_instance_method_test.rb +126 -0
- data/test/unit/array_inspect_test.rb +16 -0
- data/test/unit/backtrace_filter_test.rb +19 -0
- data/test/unit/cardinality_test.rb +56 -0
- data/test/unit/central_test.rb +65 -0
- data/test/unit/change_state_side_effect_test.rb +41 -0
- data/test/unit/class_method_test.rb +295 -0
- data/test/unit/configuration_test.rb +38 -0
- data/test/unit/date_time_inspect_test.rb +21 -0
- data/test/unit/exception_raiser_test.rb +42 -0
- data/test/unit/expectation_list_test.rb +57 -0
- data/test/unit/expectation_test.rb +480 -0
- data/test/unit/hash_inspect_test.rb +16 -0
- data/test/unit/in_state_ordering_constraint_test.rb +43 -0
- data/test/unit/metaclass_test.rb +22 -0
- data/test/unit/method_matcher_test.rb +23 -0
- data/test/unit/mock_test.rb +302 -0
- data/test/unit/mockery_test.rb +149 -0
- data/test/unit/multiple_yields_test.rb +18 -0
- data/test/unit/no_yields_test.rb +18 -0
- data/test/unit/object_inspect_test.rb +37 -0
- data/test/unit/object_test.rb +82 -0
- data/test/unit/parameter_matchers/all_of_test.rb +26 -0
- data/test/unit/parameter_matchers/any_of_test.rb +26 -0
- data/test/unit/parameter_matchers/anything_test.rb +21 -0
- data/test/unit/parameter_matchers/equals_test.rb +25 -0
- data/test/unit/parameter_matchers/has_entries_test.rb +51 -0
- data/test/unit/parameter_matchers/has_entry_test.rb +82 -0
- data/test/unit/parameter_matchers/has_key_test.rb +55 -0
- data/test/unit/parameter_matchers/has_value_test.rb +57 -0
- data/test/unit/parameter_matchers/includes_test.rb +44 -0
- data/test/unit/parameter_matchers/instance_of_test.rb +25 -0
- data/test/unit/parameter_matchers/is_a_test.rb +25 -0
- data/test/unit/parameter_matchers/kind_of_test.rb +25 -0
- data/test/unit/parameter_matchers/not_test.rb +26 -0
- data/test/unit/parameter_matchers/regexp_matches_test.rb +46 -0
- data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
- data/test/unit/parameter_matchers/stub_matcher.rb +27 -0
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
- data/test/unit/parameters_matcher_test.rb +121 -0
- data/test/unit/return_values_test.rb +63 -0
- data/test/unit/sequence_test.rb +104 -0
- data/test/unit/single_return_value_test.rb +14 -0
- data/test/unit/single_yield_test.rb +18 -0
- data/test/unit/state_machine_test.rb +98 -0
- data/test/unit/string_inspect_test.rb +11 -0
- data/test/unit/yield_parameters_test.rb +93 -0
- metadata +240 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
|
3
|
+
require 'mocha/change_state_side_effect'
|
4
|
+
|
5
|
+
class ChangeStateSideEffectTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include Mocha
|
8
|
+
|
9
|
+
class FakeState
|
10
|
+
|
11
|
+
attr_reader :active
|
12
|
+
attr_writer :description
|
13
|
+
|
14
|
+
def activate
|
15
|
+
@active = true
|
16
|
+
end
|
17
|
+
|
18
|
+
def mocha_inspect
|
19
|
+
@description
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_should_activate_the_given_state
|
25
|
+
state = FakeState.new
|
26
|
+
side_effect = ChangeStateSideEffect.new(state)
|
27
|
+
|
28
|
+
side_effect.perform
|
29
|
+
|
30
|
+
assert state.active
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_should_describe_itself_in_terms_of_the_activated_state
|
34
|
+
state = FakeState.new
|
35
|
+
state.description = 'the-new-state'
|
36
|
+
side_effect = ChangeStateSideEffect.new(state)
|
37
|
+
|
38
|
+
assert_equal 'then the-new-state', side_effect.mocha_inspect
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,295 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
require 'method_definer'
|
3
|
+
require 'mocha/mock'
|
4
|
+
|
5
|
+
require 'mocha/class_method'
|
6
|
+
|
7
|
+
class ClassMethodTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include Mocha
|
10
|
+
|
11
|
+
def test_should_provide_hidden_version_of_method_name_starting_with_prefix
|
12
|
+
method = ClassMethod.new(nil, :original_method_name)
|
13
|
+
assert_match(/^__stubba__/, method.hidden_method.to_s)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_provide_hidden_version_of_method_name_ending_with_suffix
|
17
|
+
method = ClassMethod.new(nil, :original_method_name)
|
18
|
+
assert_match(/__stubba__$/, method.hidden_method.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_should_provide_hidden_version_of_method_name_including_original_method_name
|
22
|
+
method = ClassMethod.new(nil, :original_method_name)
|
23
|
+
assert_match(/original_method_name/, method.hidden_method.to_s)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_provide_hidden_version_of_method_name_substituting_question_mark
|
27
|
+
method = ClassMethod.new(nil, :question_mark?)
|
28
|
+
assert_no_match(/\?/, method.hidden_method.to_s)
|
29
|
+
assert_match(/question_mark_substituted_character_63/, method.hidden_method.to_s)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_should_provide_hidden_version_of_method_name_substituting_exclamation_mark
|
33
|
+
method = ClassMethod.new(nil, :exclamation_mark!)
|
34
|
+
assert_no_match(/!/, method.hidden_method.to_s)
|
35
|
+
assert_match(/exclamation_mark_substituted_character_33/, method.hidden_method.to_s)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_should_provide_hidden_version_of_method_name_substituting_equals_sign
|
39
|
+
method = ClassMethod.new(nil, :equals_sign=)
|
40
|
+
assert_no_match(/\=/, method.hidden_method.to_s)
|
41
|
+
assert_match(/equals_sign_substituted_character_61/, method.hidden_method.to_s)
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_should_provide_hidden_version_of_method_name_substituting_brackets
|
45
|
+
method = ClassMethod.new(nil, :[])
|
46
|
+
assert_no_match(/\[\]/, method.hidden_method.to_s)
|
47
|
+
assert_match(/substituted_character_91__substituted_character_93/, method.hidden_method.to_s)
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_should_provide_hidden_version_of_method_name_substituting_plus_sign
|
51
|
+
method = ClassMethod.new(nil, :+)
|
52
|
+
assert_no_match(/\+/, method.hidden_method.to_s)
|
53
|
+
assert_match(/substituted_character_43/, method.hidden_method.to_s)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_should_hide_original_method
|
57
|
+
klass = Class.new { def self.method_x; end }
|
58
|
+
method = ClassMethod.new(klass, :method_x)
|
59
|
+
hidden_method_x = method.hidden_method
|
60
|
+
|
61
|
+
method.hide_original_method
|
62
|
+
|
63
|
+
assert klass.respond_to?(hidden_method_x)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_should_respond_to_original_method_name_after_original_method_has_been_hidden
|
67
|
+
klass = Class.new { def self.original_method_name; end }
|
68
|
+
method = ClassMethod.new(klass, :original_method_name)
|
69
|
+
hidden_method_x = method.hidden_method
|
70
|
+
|
71
|
+
method.hide_original_method
|
72
|
+
|
73
|
+
assert klass.respond_to?(:original_method_name)
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_should_not_hide_original_method_if_method_not_defined
|
77
|
+
klass = Class.new
|
78
|
+
method = ClassMethod.new(klass, :method_x)
|
79
|
+
hidden_method_x = method.hidden_method
|
80
|
+
|
81
|
+
method.hide_original_method
|
82
|
+
|
83
|
+
assert_equal false, klass.respond_to?(hidden_method_x)
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_should_define_a_new_method_which_should_call_mocha_method_missing
|
87
|
+
klass = Class.new { def self.method_x; end }
|
88
|
+
mocha = Mocha::Mock.new
|
89
|
+
klass.define_instance_method(:mocha) { mocha }
|
90
|
+
mocha.expects(:method_x).with(:param1, :param2).returns(:result)
|
91
|
+
method = ClassMethod.new(klass, :method_x)
|
92
|
+
|
93
|
+
method.hide_original_method
|
94
|
+
method.define_new_method
|
95
|
+
result = klass.method_x(:param1, :param2)
|
96
|
+
|
97
|
+
assert_equal :result, result
|
98
|
+
assert mocha.__verified__?
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_should_remove_new_method
|
102
|
+
klass = Class.new { def self.method_x; end }
|
103
|
+
method = ClassMethod.new(klass, :method_x)
|
104
|
+
|
105
|
+
method.remove_new_method
|
106
|
+
|
107
|
+
assert_equal false, klass.respond_to?(:method_x)
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_should_restore_original_method
|
111
|
+
klass = Class.new { def self.method_x; end }
|
112
|
+
method = ClassMethod.new(klass, :method_x)
|
113
|
+
hidden_method_x = method.hidden_method.to_sym
|
114
|
+
klass.define_instance_method(hidden_method_x) { :original_result }
|
115
|
+
|
116
|
+
method.remove_new_method
|
117
|
+
method.restore_original_method
|
118
|
+
|
119
|
+
assert_equal :original_result, klass.method_x
|
120
|
+
assert_equal false, klass.respond_to?(hidden_method_x)
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_should_not_restore_original_method_if_hidden_method_is_not_defined
|
124
|
+
klass = Class.new { def self.method_x; :new_result; end }
|
125
|
+
method = ClassMethod.new(klass, :method_x)
|
126
|
+
|
127
|
+
method.restore_original_method
|
128
|
+
|
129
|
+
assert_equal :new_result, klass.method_x
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_should_call_hide_original_method
|
133
|
+
klass = Class.new { def self.method_x; end }
|
134
|
+
method = ClassMethod.new(klass, :method_x)
|
135
|
+
method.hide_original_method
|
136
|
+
method.define_instance_accessor(:hide_called)
|
137
|
+
method.replace_instance_method(:hide_original_method) { self.hide_called = true }
|
138
|
+
|
139
|
+
method.stub
|
140
|
+
|
141
|
+
assert method.hide_called
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_should_call_define_new_method
|
145
|
+
klass = Class.new { def self.method_x; end }
|
146
|
+
method = ClassMethod.new(klass, :method_x)
|
147
|
+
method.define_instance_accessor(:define_called)
|
148
|
+
method.replace_instance_method(:define_new_method) { self.define_called = true }
|
149
|
+
|
150
|
+
method.stub
|
151
|
+
|
152
|
+
assert method.define_called
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_should_call_remove_new_method
|
156
|
+
klass = Class.new { def self.method_x; end }
|
157
|
+
klass.define_instance_method(:reset_mocha) { }
|
158
|
+
method = ClassMethod.new(klass, :method_x)
|
159
|
+
method.define_instance_accessor(:remove_called)
|
160
|
+
method.replace_instance_method(:remove_new_method) { self.remove_called = true }
|
161
|
+
|
162
|
+
method.unstub
|
163
|
+
|
164
|
+
assert method.remove_called
|
165
|
+
end
|
166
|
+
|
167
|
+
def test_should_call_restore_original_method
|
168
|
+
klass = Class.new { def self.method_x; end }
|
169
|
+
klass.define_instance_method(:reset_mocha) { }
|
170
|
+
method = ClassMethod.new(klass, :method_x)
|
171
|
+
method.define_instance_accessor(:restore_called)
|
172
|
+
method.replace_instance_method(:restore_original_method) { self.restore_called = true }
|
173
|
+
|
174
|
+
method.unstub
|
175
|
+
|
176
|
+
assert method.restore_called
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_should_call_reset_mocha
|
180
|
+
klass = Class.new { def self.method_x; end }
|
181
|
+
klass.define_instance_accessor(:reset_called)
|
182
|
+
klass.define_instance_method(:reset_mocha) { self.reset_called = true }
|
183
|
+
method = ClassMethod.new(klass, :method_x)
|
184
|
+
method.replace_instance_method(:restore_original_method) { }
|
185
|
+
|
186
|
+
method.unstub
|
187
|
+
|
188
|
+
assert klass.reset_called
|
189
|
+
end
|
190
|
+
|
191
|
+
def test_should_return_mock_for_stubbee
|
192
|
+
mocha = Object.new
|
193
|
+
stubbee = Object.new
|
194
|
+
stubbee.define_instance_accessor(:mocha) { mocha }
|
195
|
+
stubbee.mocha = nil
|
196
|
+
method = ClassMethod.new(stubbee, :method_name)
|
197
|
+
assert_equal stubbee.mocha, method.mock
|
198
|
+
end
|
199
|
+
|
200
|
+
def test_should_not_be_equal_if_other_object_has_a_different_class
|
201
|
+
class_method = ClassMethod.new(Object.new, :method)
|
202
|
+
other_object = Object.new
|
203
|
+
assert class_method != other_object
|
204
|
+
end
|
205
|
+
|
206
|
+
def test_should_not_be_equal_if_other_class_method_has_different_stubbee
|
207
|
+
stubbee_1 = Object.new
|
208
|
+
stubbee_2 = Object.new
|
209
|
+
class_method_1 = ClassMethod.new(stubbee_1, :method)
|
210
|
+
class_method_2 = ClassMethod.new(stubbee_2, :method)
|
211
|
+
assert class_method_1 != class_method_2
|
212
|
+
end
|
213
|
+
|
214
|
+
def test_should_not_be_equal_if_other_class_method_has_different_method
|
215
|
+
stubbee = Object.new
|
216
|
+
class_method_1 = ClassMethod.new(stubbee, :method_1)
|
217
|
+
class_method_2 = ClassMethod.new(stubbee, :method_2)
|
218
|
+
assert class_method_1 != class_method_2
|
219
|
+
end
|
220
|
+
|
221
|
+
def test_should_be_equal_if_other_class_method_has_same_stubbee_and_same_method_so_no_attempt_is_made_to_stub_a_method_twice
|
222
|
+
stubbee = Object.new
|
223
|
+
class_method_1 = ClassMethod.new(stubbee, :method)
|
224
|
+
class_method_2 = ClassMethod.new(stubbee, :method)
|
225
|
+
assert class_method_1 == class_method_2
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_should_be_equal_if_other_class_method_has_same_stubbee_and_same_method_but_stubbee_equal_method_lies_like_active_record_association_proxy
|
229
|
+
stubbee = Class.new do
|
230
|
+
def equal?(other); false; end
|
231
|
+
end.new
|
232
|
+
class_method_1 = ClassMethod.new(stubbee, :method)
|
233
|
+
class_method_2 = ClassMethod.new(stubbee, :method)
|
234
|
+
assert class_method_1 == class_method_2
|
235
|
+
end
|
236
|
+
|
237
|
+
end
|
238
|
+
|
239
|
+
if on_macruby?
|
240
|
+
class MacRubyClassMethodTest < Test::Unit::TestCase
|
241
|
+
|
242
|
+
include Mocha
|
243
|
+
|
244
|
+
def test_should_hide_original_method
|
245
|
+
klass = Class.new
|
246
|
+
klass.class_eval("def self.method(method, withExtraParam: param1, andAnotherParam: param2); end", __FILE__, __LINE__)
|
247
|
+
method = ClassMethod.new(klass, 'method:withExtraParam:andAnotherParam:')
|
248
|
+
|
249
|
+
method.hide_original_method
|
250
|
+
|
251
|
+
assert klass.respond_to?(method.hidden_method)
|
252
|
+
end
|
253
|
+
|
254
|
+
def test_should_define_a_new_method_which_should_call_mocha_method_missing
|
255
|
+
klass = Class.new
|
256
|
+
klass.class_eval("def self.method(method, withExtraParam: param1, andAnotherParam: param2); end", __FILE__, __LINE__)
|
257
|
+
mocha = Mocha::Mock.new
|
258
|
+
klass.define_instance_method(:mocha) { mocha }
|
259
|
+
mocha.expects('method:withExtraParam:andAnotherParam:').with(:method, :param1, :param2).returns(:result)
|
260
|
+
method = ClassMethod.new(klass, 'method:withExtraParam:andAnotherParam:')
|
261
|
+
|
262
|
+
method.hide_original_method
|
263
|
+
method.define_new_method
|
264
|
+
result = klass.send('method:withExtraParam:andAnotherParam:', :method, :param1, :param2)
|
265
|
+
|
266
|
+
assert_equal :result, result
|
267
|
+
assert mocha.__verified__?
|
268
|
+
end
|
269
|
+
|
270
|
+
def test_should_remove_new_method
|
271
|
+
klass = Class.new
|
272
|
+
klass.class_eval("def self.method(method, withExtraParam: param1, andAnotherParam: param2); end", __FILE__, __LINE__)
|
273
|
+
method = ClassMethod.new(klass, 'method:withExtraParam:andAnotherParam:')
|
274
|
+
|
275
|
+
method.remove_new_method
|
276
|
+
|
277
|
+
assert_equal false, klass.respond_to?('method:withExtraParam:andAnotherParam:')
|
278
|
+
end
|
279
|
+
|
280
|
+
def test_should_restore_original_method
|
281
|
+
klass = Class.new
|
282
|
+
klass.class_eval("def self.method(method, withExtraParam: param1, andAnotherParam: param2); :original_result; end", __FILE__, __LINE__)
|
283
|
+
method = ClassMethod.new(klass, 'method:withExtraParam:andAnotherParam:')
|
284
|
+
hidden_method = method.hidden_method.to_sym
|
285
|
+
|
286
|
+
method.hide_original_method
|
287
|
+
method.remove_new_method
|
288
|
+
method.restore_original_method
|
289
|
+
|
290
|
+
assert_equal :original_result, klass.send('method:withExtraParam:andAnotherParam:', :method, :param1, :param2)
|
291
|
+
assert_equal false, klass.respond_to?(hidden_method)
|
292
|
+
end
|
293
|
+
|
294
|
+
end
|
295
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
require "mocha/configuration"
|
3
|
+
|
4
|
+
class ConfigurationTest < Test::Unit::TestCase
|
5
|
+
def test_allow_temporarily_changes_config_when_given_block
|
6
|
+
Mocha::Configuration.warn_when(:stubbing_method_unnecessarily)
|
7
|
+
yielded = false
|
8
|
+
Mocha::Configuration.allow(:stubbing_method_unnecessarily) do
|
9
|
+
yielded = true
|
10
|
+
assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
|
11
|
+
end
|
12
|
+
assert yielded
|
13
|
+
assert Mocha::Configuration.warn_when?(:stubbing_method_unnecessarily)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_prevent_temporarily_changes_config_when_given_block
|
17
|
+
Mocha::Configuration.allow(:stubbing_method_unnecessarily)
|
18
|
+
yielded = false
|
19
|
+
Mocha::Configuration.prevent(:stubbing_method_unnecessarily) do
|
20
|
+
yielded = true
|
21
|
+
assert Mocha::Configuration.prevent?(:stubbing_method_unnecessarily)
|
22
|
+
end
|
23
|
+
assert yielded
|
24
|
+
assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_warn_when_temporarily_changes_config_when_given_block
|
28
|
+
Mocha::Configuration.allow(:stubbing_method_unnecessarily)
|
29
|
+
yielded = false
|
30
|
+
Mocha::Configuration.warn_when(:stubbing_method_unnecessarily) do
|
31
|
+
yielded = true
|
32
|
+
assert Mocha::Configuration.warn_when?(:stubbing_method_unnecessarily)
|
33
|
+
end
|
34
|
+
assert yielded
|
35
|
+
assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
require 'mocha/inspect'
|
3
|
+
|
4
|
+
class DateTimeInspectTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_should_use_include_date_in_seconds
|
7
|
+
time = Time.now
|
8
|
+
assert_equal "#{time.inspect} (#{time.to_f} secs)", time.mocha_inspect
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_should_use_to_s_for_date
|
12
|
+
date = Date.new(2006, 1, 1)
|
13
|
+
assert_equal date.to_s, date.mocha_inspect
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_use_to_s_for_datetime
|
17
|
+
datetime = DateTime.new(2006, 1, 1)
|
18
|
+
assert_equal datetime.to_s, datetime.mocha_inspect
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
|
3
|
+
require 'mocha/exception_raiser'
|
4
|
+
require 'timeout'
|
5
|
+
|
6
|
+
class ExceptionRaiserTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
include Mocha
|
9
|
+
|
10
|
+
def test_should_raise_exception_with_specified_class_and_default_message
|
11
|
+
exception_class = Class.new(StandardError)
|
12
|
+
raiser = ExceptionRaiser.new(exception_class, nil)
|
13
|
+
exception = assert_raises(exception_class) { raiser.evaluate }
|
14
|
+
assert_equal exception_class.to_s, exception.message
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_should_raise_exception_with_specified_class_and_message
|
18
|
+
exception_class = Class.new(StandardError)
|
19
|
+
raiser = ExceptionRaiser.new(exception_class, 'message')
|
20
|
+
exception = assert_raises(exception_class) { raiser.evaluate }
|
21
|
+
assert_equal 'message', exception.message
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_should_raise_exception_instance
|
25
|
+
exception_class = Class.new(StandardError)
|
26
|
+
raiser = ExceptionRaiser.new(exception_class.new('message'), nil)
|
27
|
+
exception = assert_raises(exception_class) { raiser.evaluate }
|
28
|
+
assert_equal 'message', exception.message
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_should_raise_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
|
32
|
+
raiser = ExceptionRaiser.new(Interrupt, nil)
|
33
|
+
assert_raises(Interrupt) { raiser.evaluate }
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_raise_subclass_of_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
|
37
|
+
exception_class = Class.new(Interrupt)
|
38
|
+
raiser = ExceptionRaiser.new(exception_class, nil)
|
39
|
+
assert_raises(exception_class) { raiser.evaluate }
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "test_helper")
|
2
|
+
require 'mocha/expectation_list'
|
3
|
+
require 'mocha/expectation'
|
4
|
+
require 'set'
|
5
|
+
require 'method_definer'
|
6
|
+
|
7
|
+
class ExpectationListTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include Mocha
|
10
|
+
|
11
|
+
def test_should_return_added_expectation
|
12
|
+
expectation_list = ExpectationList.new
|
13
|
+
expectation = Expectation.new(nil, :my_method)
|
14
|
+
assert_same expectation, expectation_list.add(expectation)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_should_find_matching_expectation
|
18
|
+
expectation_list = ExpectationList.new
|
19
|
+
expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
|
20
|
+
expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
|
21
|
+
expectation_list.add(expectation1)
|
22
|
+
expectation_list.add(expectation2)
|
23
|
+
assert_same expectation1, expectation_list.match(:my_method, :argument1, :argument2)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_find_most_recent_matching_expectation
|
27
|
+
expectation_list = ExpectationList.new
|
28
|
+
expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
|
29
|
+
expectation2 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
|
30
|
+
expectation_list.add(expectation1)
|
31
|
+
expectation_list.add(expectation2)
|
32
|
+
assert_same expectation2, expectation_list.match(:my_method, :argument1, :argument2)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_should_find_matching_expectation_allowing_invocation
|
36
|
+
expectation_list = ExpectationList.new
|
37
|
+
expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
|
38
|
+
expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
|
39
|
+
expectation1.define_instance_method(:invocations_allowed?) { true }
|
40
|
+
expectation2.define_instance_method(:invocations_allowed?) { true }
|
41
|
+
expectation_list.add(expectation1)
|
42
|
+
expectation_list.add(expectation2)
|
43
|
+
assert_same expectation1, expectation_list.match_allowing_invocation(:my_method, :argument1, :argument2)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_find_most_recent_matching_expectation_allowing_invocation
|
47
|
+
expectation_list = ExpectationList.new
|
48
|
+
expectation1 = Expectation.new(nil, :my_method)
|
49
|
+
expectation2 = Expectation.new(nil, :my_method)
|
50
|
+
expectation1.define_instance_method(:invocations_allowed?) { true }
|
51
|
+
expectation2.define_instance_method(:invocations_allowed?) { false }
|
52
|
+
expectation_list.add(expectation1)
|
53
|
+
expectation_list.add(expectation2)
|
54
|
+
assert_same expectation1, expectation_list.match_allowing_invocation(:my_method)
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|