mocha 1.11.2 → 1.12.0

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 (200) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +1 -1
  3. data/README.md +28 -30
  4. data/RELEASE.md +25 -0
  5. data/Rakefile +6 -1
  6. data/lib/mocha/cardinality.rb +30 -27
  7. data/lib/mocha/expectation.rb +24 -24
  8. data/lib/mocha/mock.rb +1 -1
  9. data/lib/mocha/mockery.rb +9 -22
  10. data/lib/mocha/state_machine.rb +30 -38
  11. data/lib/mocha/version.rb +1 -1
  12. data/mocha.gemspec +3 -1
  13. metadata +5 -192
  14. data/docs/CNAME +0 -1
  15. data/docs/Mocha.html +0 -254
  16. data/docs/Mocha/API.html +0 -1285
  17. data/docs/Mocha/ClassMethods.html +0 -264
  18. data/docs/Mocha/Configuration.html +0 -1525
  19. data/docs/Mocha/Expectation.html +0 -2862
  20. data/docs/Mocha/ExpectationError.html +0 -152
  21. data/docs/Mocha/ExpectationErrorFactory.html +0 -260
  22. data/docs/Mocha/Hooks.html +0 -370
  23. data/docs/Mocha/Integration.html +0 -125
  24. data/docs/Mocha/Integration/MiniTest.html +0 -123
  25. data/docs/Mocha/Integration/MiniTest/Adapter.html +0 -164
  26. data/docs/Mocha/Integration/TestUnit.html +0 -123
  27. data/docs/Mocha/Integration/TestUnit/Adapter.html +0 -164
  28. data/docs/Mocha/Mock.html +0 -1210
  29. data/docs/Mocha/ObjectMethods.html +0 -765
  30. data/docs/Mocha/ParameterMatchers.html +0 -2949
  31. data/docs/Mocha/ParameterMatchers/AllOf.html +0 -153
  32. data/docs/Mocha/ParameterMatchers/AnyOf.html +0 -153
  33. data/docs/Mocha/ParameterMatchers/AnyParameters.html +0 -153
  34. data/docs/Mocha/ParameterMatchers/Anything.html +0 -153
  35. data/docs/Mocha/ParameterMatchers/Base.html +0 -441
  36. data/docs/Mocha/ParameterMatchers/Equals.html +0 -153
  37. data/docs/Mocha/ParameterMatchers/EquivalentUri.html +0 -153
  38. data/docs/Mocha/ParameterMatchers/HasEntries.html +0 -153
  39. data/docs/Mocha/ParameterMatchers/HasEntry.html +0 -153
  40. data/docs/Mocha/ParameterMatchers/HasKey.html +0 -153
  41. data/docs/Mocha/ParameterMatchers/HasValue.html +0 -153
  42. data/docs/Mocha/ParameterMatchers/Includes.html +0 -153
  43. data/docs/Mocha/ParameterMatchers/InstanceOf.html +0 -153
  44. data/docs/Mocha/ParameterMatchers/IsA.html +0 -153
  45. data/docs/Mocha/ParameterMatchers/KindOf.html +0 -153
  46. data/docs/Mocha/ParameterMatchers/Not.html +0 -153
  47. data/docs/Mocha/ParameterMatchers/Optionally.html +0 -153
  48. data/docs/Mocha/ParameterMatchers/RegexpMatches.html +0 -153
  49. data/docs/Mocha/ParameterMatchers/RespondsWith.html +0 -153
  50. data/docs/Mocha/ParameterMatchers/YamlEquivalent.html +0 -153
  51. data/docs/Mocha/Sequence.html +0 -149
  52. data/docs/Mocha/StateMachine.html +0 -527
  53. data/docs/Mocha/StateMachine/State.html +0 -140
  54. data/docs/Mocha/StateMachine/StatePredicate.html +0 -140
  55. data/docs/Mocha/StubbingError.html +0 -150
  56. data/docs/_index.html +0 -519
  57. data/docs/class_list.html +0 -51
  58. data/docs/css/common.css +0 -1
  59. data/docs/css/full_list.css +0 -58
  60. data/docs/css/style.css +0 -496
  61. data/docs/file.COPYING.html +0 -81
  62. data/docs/file.MIT-LICENSE.html +0 -85
  63. data/docs/file.README.html +0 -448
  64. data/docs/file.RELEASE.html +0 -1028
  65. data/docs/file_list.html +0 -71
  66. data/docs/frames.html +0 -17
  67. data/docs/index.html +0 -448
  68. data/docs/js/app.js +0 -303
  69. data/docs/js/full_list.js +0 -216
  70. data/docs/js/jquery.js +0 -4
  71. data/docs/method_list.html +0 -651
  72. data/docs/top-level-namespace.html +0 -118
  73. data/test/acceptance/acceptance_test_helper.rb +0 -42
  74. data/test/acceptance/bug_18914_test.rb +0 -37
  75. data/test/acceptance/bug_21465_test.rb +0 -31
  76. data/test/acceptance/bug_21563_test.rb +0 -22
  77. data/test/acceptance/display_matching_invocations_alongside_expectations_test.rb +0 -69
  78. data/test/acceptance/exception_rescue_test.rb +0 -53
  79. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  80. data/test/acceptance/expected_invocation_count_test.rb +0 -229
  81. data/test/acceptance/failure_messages_test.rb +0 -77
  82. data/test/acceptance/issue_272_test.rb +0 -50
  83. data/test/acceptance/issue_457_test.rb +0 -31
  84. data/test/acceptance/issue_65_test.rb +0 -64
  85. data/test/acceptance/issue_70_test.rb +0 -53
  86. data/test/acceptance/mocha_example_test.rb +0 -106
  87. data/test/acceptance/mocha_test_result_test.rb +0 -83
  88. data/test/acceptance/mock_built_with_first_argument_type_being_string_test.rb +0 -98
  89. data/test/acceptance/mock_test.rb +0 -191
  90. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -75
  91. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -66
  92. data/test/acceptance/multiple_yielding_test.rb +0 -59
  93. data/test/acceptance/optional_parameters_test.rb +0 -67
  94. data/test/acceptance/parameter_matcher_test.rb +0 -299
  95. data/test/acceptance/partial_mocks_test.rb +0 -44
  96. data/test/acceptance/prepend_test.rb +0 -86
  97. data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +0 -76
  98. data/test/acceptance/raise_exception_test.rb +0 -36
  99. data/test/acceptance/return_value_test.rb +0 -49
  100. data/test/acceptance/sequence_test.rb +0 -189
  101. data/test/acceptance/states_test.rb +0 -71
  102. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -64
  103. data/test/acceptance/stub_any_instance_method_test.rb +0 -301
  104. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -105
  105. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  106. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -73
  107. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -144
  108. data/test/acceptance/stub_everything_test.rb +0 -53
  109. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -91
  110. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -67
  111. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -67
  112. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -136
  113. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -76
  114. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  115. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -67
  116. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -70
  117. data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -38
  118. data/test/acceptance/stub_module_method_test.rb +0 -200
  119. data/test/acceptance/stub_test.rb +0 -49
  120. data/test/acceptance/stubba_example_test.rb +0 -103
  121. data/test/acceptance/stubba_test_result_test.rb +0 -71
  122. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -63
  123. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  124. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -52
  125. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -63
  126. data/test/acceptance/stubbing_nil_test.rb +0 -60
  127. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -157
  128. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  129. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -145
  130. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -128
  131. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  132. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -141
  133. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -70
  134. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -33
  135. data/test/acceptance/throw_test.rb +0 -42
  136. data/test/acceptance/unexpected_invocation_test.rb +0 -23
  137. data/test/acceptance/unstubbing_test.rb +0 -194
  138. data/test/acceptance/yielding_test.rb +0 -80
  139. data/test/assertions.rb +0 -8
  140. data/test/deprecation_disabler.rb +0 -15
  141. data/test/execution_point.rb +0 -36
  142. data/test/integration/mini_test_test.rb +0 -8
  143. data/test/integration/shared_tests.rb +0 -178
  144. data/test/integration/test_unit_test.rb +0 -8
  145. data/test/method_definer.rb +0 -16
  146. data/test/mini_test_result.rb +0 -96
  147. data/test/minitest_result.rb +0 -48
  148. data/test/simple_counter.rb +0 -11
  149. data/test/test_helper.rb +0 -58
  150. data/test/test_runner.rb +0 -58
  151. data/test/test_unit_result.rb +0 -22
  152. data/test/unit/any_instance_method_test.rb +0 -175
  153. data/test/unit/array_inspect_test.rb +0 -14
  154. data/test/unit/backtrace_filter_test.rb +0 -17
  155. data/test/unit/cardinality_test.rb +0 -72
  156. data/test/unit/central_test.rb +0 -98
  157. data/test/unit/change_state_side_effect_test.rb +0 -37
  158. data/test/unit/class_methods_test.rb +0 -69
  159. data/test/unit/configuration_test.rb +0 -37
  160. data/test/unit/date_time_inspect_test.rb +0 -19
  161. data/test/unit/exception_raiser_test.rb +0 -45
  162. data/test/unit/expectation_list_test.rb +0 -82
  163. data/test/unit/expectation_test.rb +0 -504
  164. data/test/unit/hash_inspect_test.rb +0 -14
  165. data/test/unit/hooks_test.rb +0 -35
  166. data/test/unit/in_state_ordering_constraint_test.rb +0 -39
  167. data/test/unit/instance_method_test.rb +0 -282
  168. data/test/unit/method_matcher_test.rb +0 -26
  169. data/test/unit/mock_test.rb +0 -372
  170. data/test/unit/mockery_test.rb +0 -171
  171. data/test/unit/module_methods_test.rb +0 -16
  172. data/test/unit/object_inspect_test.rb +0 -60
  173. data/test/unit/object_methods_test.rb +0 -63
  174. data/test/unit/parameter_matchers/all_of_test.rb +0 -24
  175. data/test/unit/parameter_matchers/any_of_test.rb +0 -24
  176. data/test/unit/parameter_matchers/anything_test.rb +0 -19
  177. data/test/unit/parameter_matchers/equals_test.rb +0 -23
  178. data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -41
  179. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  180. data/test/unit/parameter_matchers/has_entry_test.rb +0 -128
  181. data/test/unit/parameter_matchers/has_key_test.rb +0 -54
  182. data/test/unit/parameter_matchers/has_value_test.rb +0 -55
  183. data/test/unit/parameter_matchers/includes_test.rb +0 -106
  184. data/test/unit/parameter_matchers/instance_of_test.rb +0 -23
  185. data/test/unit/parameter_matchers/is_a_test.rb +0 -23
  186. data/test/unit/parameter_matchers/kind_of_test.rb +0 -23
  187. data/test/unit/parameter_matchers/not_test.rb +0 -24
  188. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -45
  189. data/test/unit/parameter_matchers/responds_with_test.rb +0 -38
  190. data/test/unit/parameter_matchers/stub_matcher.rb +0 -23
  191. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -23
  192. data/test/unit/parameters_matcher_test.rb +0 -119
  193. data/test/unit/receivers_test.rb +0 -96
  194. data/test/unit/return_values_test.rb +0 -66
  195. data/test/unit/sequence_test.rb +0 -100
  196. data/test/unit/single_return_value_test.rb +0 -17
  197. data/test/unit/state_machine_test.rb +0 -96
  198. data/test/unit/string_inspect_test.rb +0 -9
  199. data/test/unit/thrower_test.rb +0 -23
  200. data/test/unit/yield_parameters_test.rb +0 -73
@@ -1,58 +0,0 @@
1
- require 'assertions'
2
-
3
- require 'mocha/detection/mini_test'
4
-
5
- module TestRunner
6
- def run_as_test(&block)
7
- run_as_tests(:test_me => block)
8
- end
9
-
10
- # rubocop:disable Metrics/AbcSize
11
- def run_as_tests(methods = {})
12
- base_class = Mocha::TestCase
13
- test_class = Class.new(base_class) do
14
- include Assertions
15
-
16
- methods.each do |(method_name, proc)|
17
- define_method(method_name, proc)
18
- end
19
- end
20
-
21
- tests = methods.keys.select { |m| m.to_s[/^test/] }.map { |m| test_class.new(m) }
22
-
23
- if Mocha::Detection::MiniTest.testcase && (ENV['MOCHA_RUN_INTEGRATION_TESTS'] != 'test-unit')
24
- minitest_version = Gem::Version.new(Mocha::Detection::MiniTest.version)
25
- if Gem::Requirement.new('>= 5.0.0').satisfied_by?(minitest_version)
26
- require File.expand_path('../minitest_result', __FILE__)
27
- tests.each(&:run)
28
- Minitest::Runnable.runnables.delete(test_class)
29
- test_result = MinitestResult.new(tests)
30
- elsif Gem::Requirement.new('> 0.0.0', '< 5.0.0').satisfied_by?(minitest_version)
31
- require File.expand_path('../mini_test_result', __FILE__)
32
- runner = MiniTest::Unit.new
33
- tests.each do |test|
34
- test.run(runner)
35
- end
36
- test_result = MiniTestResult.new(runner, tests)
37
- end
38
- else
39
- require File.expand_path('../test_unit_result', __FILE__)
40
- test_result = TestUnitResult.build_test_result
41
- tests.each do |test|
42
- test.run(test_result) {}
43
- end
44
- end
45
-
46
- test_result
47
- end
48
- # rubocop:enable Metrics/AbcSize
49
-
50
- def assert_passed(test_result)
51
- flunk "Test failed unexpectedly with message: #{test_result.failures}" if test_result.failure_count > 0
52
- flunk "Test failed unexpectedly with message: #{test_result.errors.map(&:exception)}" if test_result.error_count > 0
53
- end
54
-
55
- def assert_failed(test_result)
56
- flunk 'Test passed unexpectedly' unless test_result.failure_count + test_result.error_count > 0
57
- end
58
- end
@@ -1,22 +0,0 @@
1
- require 'test/unit/testresult'
2
-
3
- class TestUnitResult
4
- def self.build_test_result
5
- test_result = Test::Unit::TestResult.new
6
- class << test_result
7
- attr_reader :failures, :errors
8
- def failure_messages
9
- failures.map(&:message)
10
- end
11
-
12
- def failure_message_lines
13
- failure_messages.map { |message| message.split("\n") }.flatten
14
- end
15
-
16
- def error_messages
17
- errors.map(&:message)
18
- end
19
- end
20
- test_result
21
- end
22
- end
@@ -1,175 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'method_definer'
3
- require 'mocha/class_methods'
4
- require 'mocha/mock'
5
- require 'mocha/any_instance_method'
6
-
7
- class AnyInstanceMethodTest < Mocha::TestCase
8
- include MethodDefiner
9
- include Mocha
10
-
11
- def class_with_method(method, result = nil)
12
- Class.new do
13
- extend ClassMethods
14
- define_method(method) { result } if method
15
- end
16
- end
17
-
18
- unless RUBY_V2_PLUS
19
- def test_should_hide_original_method
20
- klass = class_with_method(:method_x)
21
- method = AnyInstanceMethod.new(klass, :method_x)
22
-
23
- method.hide_original_method
24
-
25
- assert_equal false, klass.method_defined?(:method_x)
26
- end
27
- end
28
-
29
- def test_should_not_raise_error_hiding_method_that_isnt_defined
30
- klass = class_with_method(:irrelevant)
31
- method = AnyInstanceMethod.new(klass, :method_x)
32
-
33
- assert_nothing_raised { method.hide_original_method }
34
- end
35
-
36
- def test_should_define_a_new_method
37
- klass = class_with_method(:method_x)
38
- method = AnyInstanceMethod.new(klass, :method_x)
39
- mocha = build_mock
40
- mocha.expects(:method_x).with(:param1, :param2).returns(:result)
41
- any_instance = Object.new
42
- define_instance_method(any_instance, :mocha) { mocha }
43
- define_instance_method(klass, :any_instance) { any_instance }
44
-
45
- method.hide_original_method
46
- method.define_new_method
47
-
48
- instance = klass.new
49
- result = instance.method_x(:param1, :param2)
50
-
51
- assert_equal :result, result
52
- assert mocha.__verified__?
53
- end
54
-
55
- def test_should_include_the_filename_and_line_number_in_exceptions
56
- klass = class_with_method(:method_x)
57
- method = AnyInstanceMethod.new(klass, :method_x)
58
- mocha = build_mock
59
- mocha.stubs(:method_x).raises(Exception)
60
- any_instance = Object.new
61
- define_instance_method(any_instance, :mocha) { mocha }
62
- define_instance_method(klass, :any_instance) { any_instance }
63
-
64
- method.hide_original_method
65
- method.define_new_method
66
-
67
- expected_filename = 'stubbed_method.rb'
68
- expected_line_number = 61
69
-
70
- exception = assert_raises(Exception) { klass.new.method_x }
71
- matching_line = exception.backtrace.find do |line|
72
- filename, line_number, _context = line.split(':')
73
- filename.include?(expected_filename) && line_number.to_i == expected_line_number
74
- end
75
-
76
- assert_not_nil matching_line, "Expected to find #{expected_filename}:#{expected_line_number} in the backtrace:\n #{exception.backtrace.join("\n")}"
77
- end
78
-
79
- def test_should_restore_original_method
80
- klass = class_with_method(:method_x, :original_result)
81
- method = AnyInstanceMethod.new(klass, :method_x)
82
-
83
- method.hide_original_method
84
- method.define_new_method
85
- method.remove_new_method
86
- method.restore_original_method
87
-
88
- instance = klass.new
89
- assert instance.respond_to?(:method_x)
90
- assert_equal :original_result, instance.method_x
91
- end
92
-
93
- def test_should_not_restore_original_method_if_none_was_defined_in_first_place
94
- klass = class_with_method(:method_x, :new_result)
95
- method = AnyInstanceMethod.new(klass, :method_x)
96
-
97
- method.restore_original_method
98
-
99
- instance = klass.new
100
- assert_equal :new_result, instance.method_x
101
- end
102
-
103
- def test_should_call_remove_new_method
104
- klass = class_with_method(:method_x)
105
- any_instance = build_mock
106
- any_instance_mocha = build_mock
107
- any_instance.stubs(:mocha).returns(any_instance_mocha)
108
- define_instance_method(klass, :any_instance) { any_instance }
109
- method = AnyInstanceMethod.new(klass, :method_x)
110
- replace_instance_method(method, :restore_original_method) {}
111
- replace_instance_method(method, :reset_mocha) {}
112
- define_instance_accessor(method, :remove_called)
113
- replace_instance_method(method, :remove_new_method) { self.remove_called = true }
114
-
115
- method.unstub
116
-
117
- assert method.remove_called
118
- end
119
-
120
- def test_should_call_restore_original_method
121
- klass = class_with_method(:method_x)
122
- any_instance = build_mock
123
- any_instance_mocha = build_mock
124
- any_instance.stubs(:mocha).returns(any_instance_mocha)
125
- define_instance_method(klass, :any_instance) { any_instance }
126
- method = AnyInstanceMethod.new(klass, :method_x)
127
- replace_instance_method(method, :remove_new_method) {}
128
- replace_instance_method(method, :reset_mocha) {}
129
- define_instance_accessor(method, :restore_called)
130
- replace_instance_method(method, :restore_original_method) { self.restore_called = true }
131
-
132
- method.unstub
133
-
134
- assert method.restore_called
135
- end
136
-
137
- def test_should_call_mock_unstub
138
- klass = class_with_method(:method_x)
139
-
140
- method = AnyInstanceMethod.new(klass, :method_x)
141
-
142
- replace_instance_method(method, :remove_new_method) {}
143
- replace_instance_method(method, :restore_original_method) {}
144
- mocha = Class.new do
145
- class << self
146
- attr_accessor :unstub_method
147
- end
148
- def self.unstub(method)
149
- self.unstub_method = method
150
- end
151
- end
152
- define_instance_method(mocha, :any_expectations?) { true }
153
- replace_instance_method(method, :mock) { mocha }
154
-
155
- method.unstub
156
-
157
- assert_equal mocha.unstub_method, :method_x
158
- end
159
-
160
- def test_should_return_any_instance_mocha_for_stubbee
161
- mocha = Object.new
162
- any_instance = Object.new
163
- define_instance_method(any_instance, :mocha) { mocha }
164
- stubbee = class_with_method(:method_x)
165
- define_instance_method(stubbee, :any_instance) { any_instance }
166
- method = AnyInstanceMethod.new(stubbee, :method_name)
167
- assert_equal stubbee.any_instance.mocha, method.mock
168
- end
169
-
170
- private
171
-
172
- def build_mock
173
- Mock.new(nil)
174
- end
175
- end
@@ -1,14 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/inspect'
3
-
4
- class ArrayInspectTest < Mocha::TestCase
5
- def test_should_use_inspect
6
- array = [1, 2]
7
- assert_equal array.inspect, array.mocha_inspect
8
- end
9
-
10
- def test_should_use_mocha_inspect_on_each_item
11
- array = [1, 2, 'chris']
12
- assert_equal %([1, 2, "chris"]), array.mocha_inspect
13
- end
14
- end
@@ -1,17 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/backtrace_filter'
3
-
4
- class BacktraceFilterTest < Mocha::TestCase
5
- include Mocha
6
-
7
- def test_should_exclude_mocha_locations_from_backtrace
8
- mocha_lib = '/username/workspace/mocha_wibble/lib/'
9
- backtrace = [mocha_lib + 'exclude/me/1', mocha_lib + 'exclude/me/2', '/keep/me', mocha_lib + 'exclude/me/3']
10
- filter = BacktraceFilter.new(mocha_lib)
11
- assert_equal ['/keep/me'], filter.filtered(backtrace)
12
- end
13
-
14
- def test_should_determine_path_for_mocha_lib_directory
15
- assert_match Regexp.new('/lib/$'), BacktraceFilter::LIB_DIRECTORY
16
- end
17
- end
@@ -1,72 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/cardinality'
3
- require 'mocha/invocation'
4
- require 'mocha/return_values'
5
- require 'mocha/yield_parameters'
6
-
7
- class CardinalityTest < Mocha::TestCase
8
- include Mocha
9
-
10
- def new_invocation
11
- Invocation.new(:irrelevant, :irrelevant)
12
- end
13
-
14
- def test_should_allow_invocations_if_invocation_count_has_not_yet_reached_maximum
15
- cardinality = Cardinality.new(2, 3)
16
- assert cardinality.invocations_allowed?
17
- cardinality << new_invocation
18
- assert cardinality.invocations_allowed?
19
- cardinality << new_invocation
20
- assert cardinality.invocations_allowed?
21
- cardinality << new_invocation
22
- assert !cardinality.invocations_allowed?
23
- end
24
-
25
- def test_should_be_satisfied_if_invocations_so_far_have_reached_required_threshold
26
- cardinality = Cardinality.new(2, 3)
27
- assert !cardinality.satisfied?
28
- cardinality << new_invocation
29
- assert !cardinality.satisfied?
30
- cardinality << new_invocation
31
- assert cardinality.satisfied?
32
- cardinality << new_invocation
33
- assert cardinality.satisfied?
34
- end
35
-
36
- def test_should_describe_cardinality_defined_using_at_least
37
- assert_equal 'allowed any number of times', Cardinality.at_least(0).anticipated_times
38
- assert_equal 'expected at least once', Cardinality.at_least(1).anticipated_times
39
- assert_equal 'expected at least twice', Cardinality.at_least(2).anticipated_times
40
- assert_equal 'expected at least 3 times', Cardinality.at_least(3).anticipated_times
41
- end
42
-
43
- def test_should_describe_cardinality_defined_using_at_most
44
- assert_equal 'expected at most once', Cardinality.at_most(1).anticipated_times
45
- assert_equal 'expected at most twice', Cardinality.at_most(2).anticipated_times
46
- assert_equal 'expected at most 3 times', Cardinality.at_most(3).anticipated_times
47
- end
48
-
49
- def test_should_describe_cardinality_defined_using_exactly
50
- assert_equal 'expected never', Cardinality.exactly(0).anticipated_times
51
- assert_equal 'expected exactly once', Cardinality.exactly(1).anticipated_times
52
- assert_equal 'expected exactly twice', Cardinality.exactly(2).anticipated_times
53
- assert_equal 'expected exactly 3 times', Cardinality.exactly(3).anticipated_times
54
- end
55
-
56
- def test_should_describe_cardinality_defined_using_times_with_range
57
- assert_equal 'expected between 2 and 4 times', Cardinality.times(2..4).anticipated_times
58
- assert_equal 'expected between 1 and 3 times', Cardinality.times(1..3).anticipated_times
59
- end
60
-
61
- def test_should_need_verifying
62
- assert Cardinality.exactly(2).needs_verifying?
63
- assert Cardinality.at_least(3).needs_verifying?
64
- assert Cardinality.at_most(2).needs_verifying?
65
- assert Cardinality.times(4).needs_verifying?
66
- assert Cardinality.times(2..4).needs_verifying?
67
- end
68
-
69
- def test_should_not_need_verifying
70
- assert_equal false, Cardinality.at_least(0).needs_verifying?
71
- end
72
- end
@@ -1,98 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- require 'mocha/central'
4
- require 'mocha/mock'
5
-
6
- class CentralTest < Mocha::TestCase
7
- include Mocha
8
-
9
- def test_should_start_with_empty_stubba_methods
10
- stubba = Central.new
11
-
12
- assert_equal [], stubba.stubba_methods
13
- end
14
-
15
- def test_should_stub_method_if_not_already_stubbed
16
- method = build_mock
17
- method.expects(:stub)
18
- stubba = Central.new
19
-
20
- stubba.stub(method)
21
-
22
- assert method.__verified__?
23
- end
24
-
25
- def test_should_not_stub_method_if_already_stubbed
26
- method = build_mock
27
- method.stubs(:matches?).returns(true)
28
- method.expects(:stub).times(0)
29
- stubba = Central.new
30
- stubba.stubba_methods = [method]
31
-
32
- stubba.stub(method)
33
-
34
- assert method.__verified__?
35
- end
36
-
37
- def test_should_record_method
38
- method = build_mock
39
- method.expects(:stub)
40
- stubba = Central.new
41
-
42
- stubba.stub(method)
43
-
44
- assert_equal [method], stubba.stubba_methods
45
- end
46
-
47
- def test_should_unstub_specified_method
48
- stubba = Central.new
49
- method1 = build_mock
50
- method1.stubs(:matches?).returns(false)
51
- method2 = build_mock
52
- method2.stubs(:matches?).returns(true)
53
- method2.expects(:unstub)
54
- stubba.stubba_methods = [method1, method2]
55
-
56
- stubba.unstub(method2)
57
-
58
- assert_equal [method1], stubba.stubba_methods
59
- assert method2.__verified__?
60
- end
61
-
62
- def test_should_not_unstub_specified_method_if_not_already_stubbed
63
- stubba = Central.new
64
- method1 = build_mock
65
- method1.stubs(:matches?).returns(false)
66
- method2 = build_mock
67
- method2.expects(:unstub).never
68
- stubba.stubba_methods = [method1]
69
-
70
- stubba.unstub(method2)
71
-
72
- assert_equal [method1], stubba.stubba_methods
73
- assert method2.__verified__?
74
- end
75
-
76
- def test_should_unstub_all_methods
77
- stubba = Central.new
78
- method1 = build_mock
79
- method1.stubs(:matches?).returns(true)
80
- method1.expects(:unstub)
81
- method2 = build_mock
82
- method2.stubs(:matches?).returns(true)
83
- method2.expects(:unstub)
84
- stubba.stubba_methods = [method1, method2]
85
-
86
- stubba.unstub_all
87
-
88
- assert_equal [], stubba.stubba_methods
89
- assert method1.__verified__?
90
- assert method2.__verified__?
91
- end
92
-
93
- private
94
-
95
- def build_mock
96
- Mock.new(nil)
97
- end
98
- end