mocha 1.1.0 → 1.13.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 (263) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +61 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -0
  6. data/CONTRIBUTING.md +4 -9
  7. data/README.md +114 -28
  8. data/RELEASE.md +248 -1
  9. data/Rakefile +53 -35
  10. data/gemfiles/Gemfile.test-unit.latest +5 -1
  11. data/init.rb +1 -3
  12. data/lib/mocha/any_instance_method.rb +12 -72
  13. data/lib/mocha/api.rb +121 -56
  14. data/lib/mocha/argument_iterator.rb +4 -8
  15. data/lib/mocha/backtrace_filter.rb +1 -5
  16. data/lib/mocha/block_matcher.rb +31 -0
  17. data/lib/mocha/cardinality.rb +60 -49
  18. data/lib/mocha/central.rb +21 -12
  19. data/lib/mocha/change_state_side_effect.rb +0 -4
  20. data/lib/mocha/class_methods.rb +19 -20
  21. data/lib/mocha/configuration.rb +361 -18
  22. data/lib/mocha/debug.rb +3 -2
  23. data/lib/mocha/deprecation.rb +8 -11
  24. data/lib/mocha/detection/mini_test.rb +0 -2
  25. data/lib/mocha/detection/test_unit.rb +3 -5
  26. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  27. data/lib/mocha/exception_raiser.rb +4 -6
  28. data/lib/mocha/expectation.rb +125 -89
  29. data/lib/mocha/expectation_error.rb +1 -1
  30. data/lib/mocha/expectation_error_factory.rb +0 -1
  31. data/lib/mocha/expectation_list.rb +7 -11
  32. data/lib/mocha/hooks.rb +1 -3
  33. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  34. data/lib/mocha/inspect.rb +30 -38
  35. data/lib/mocha/instance_method.rb +15 -8
  36. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  37. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  38. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  39. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  40. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  41. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  44. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  45. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  46. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  47. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  48. data/lib/mocha/integration/mini_test.rb +7 -0
  49. data/lib/mocha/integration/monkey_patcher.rb +8 -2
  50. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  51. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  52. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  53. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  54. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  55. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  56. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +4 -1
  57. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  58. data/lib/mocha/integration/test_unit.rb +7 -0
  59. data/lib/mocha/integration.rb +2 -5
  60. data/lib/mocha/invocation.rb +77 -0
  61. data/lib/mocha/is_a.rb +0 -2
  62. data/lib/mocha/logger.rb +0 -4
  63. data/lib/mocha/macos_version.rb +5 -0
  64. data/lib/mocha/method_matcher.rb +1 -5
  65. data/lib/mocha/minitest.rb +8 -0
  66. data/lib/mocha/mock.rb +94 -46
  67. data/lib/mocha/mockery.rb +72 -98
  68. data/lib/mocha/names.rb +2 -12
  69. data/lib/mocha/not_initialized_error.rb +7 -0
  70. data/lib/mocha/object_methods.rb +25 -31
  71. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  72. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  73. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  74. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  75. data/lib/mocha/parameter_matchers/base.rb +6 -12
  76. data/lib/mocha/parameter_matchers/equals.rb +1 -7
  77. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +15 -15
  78. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  79. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  80. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  81. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  82. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  83. data/lib/mocha/parameter_matchers/includes.rb +50 -8
  84. data/lib/mocha/parameter_matchers/instance_methods.rb +18 -0
  85. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  86. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  87. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  88. data/lib/mocha/parameter_matchers/not.rb +2 -7
  89. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  90. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  91. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  92. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  93. data/lib/mocha/parameter_matchers.rb +3 -4
  94. data/lib/mocha/parameters_matcher.rb +6 -9
  95. data/lib/mocha/raised_exception.rb +11 -0
  96. data/lib/mocha/receivers.rb +10 -14
  97. data/lib/mocha/return_values.rb +4 -8
  98. data/lib/mocha/ruby_version.rb +4 -0
  99. data/lib/mocha/sequence.rb +4 -9
  100. data/lib/mocha/setup.rb +5 -0
  101. data/lib/mocha/single_return_value.rb +2 -5
  102. data/lib/mocha/singleton_class.rb +9 -0
  103. data/lib/mocha/state_machine.rb +33 -46
  104. data/lib/mocha/stubbed_method.rb +125 -0
  105. data/lib/mocha/stubbing_error.rb +2 -13
  106. data/lib/mocha/test_unit.rb +7 -2
  107. data/lib/mocha/thrower.rb +4 -6
  108. data/lib/mocha/thrown_object.rb +12 -0
  109. data/lib/mocha/version.rb +1 -1
  110. data/lib/mocha/yield_parameters.rb +7 -17
  111. data/lib/mocha.rb +8 -0
  112. data/mocha.gemspec +42 -40
  113. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  114. data/yard-templates/default/layout/html/setup.rb +2 -3
  115. metadata +45 -191
  116. data/bin/build-matrix +0 -71
  117. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  118. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  119. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  120. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  121. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  122. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  123. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  124. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  125. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  126. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  127. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  128. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  129. data/lib/mocha/class_method.rb +0 -127
  130. data/lib/mocha/mini_test.rb +0 -3
  131. data/lib/mocha/module_method.rb +0 -16
  132. data/lib/mocha/module_methods.rb +0 -14
  133. data/lib/mocha/multiple_yields.rb +0 -20
  134. data/lib/mocha/no_yields.rb +0 -11
  135. data/lib/mocha/parameter_matchers/object.rb +0 -17
  136. data/lib/mocha/pretty_parameters.rb +0 -28
  137. data/lib/mocha/single_yield.rb +0 -18
  138. data/lib/mocha/standalone.rb +0 -4
  139. data/lib/mocha/unexpected_invocation.rb +0 -26
  140. data/lib/mocha_standalone.rb +0 -4
  141. data/test/acceptance/acceptance_test_helper.rb +0 -41
  142. data/test/acceptance/bug_18914_test.rb +0 -43
  143. data/test/acceptance/bug_21465_test.rb +0 -34
  144. data/test/acceptance/bug_21563_test.rb +0 -25
  145. data/test/acceptance/exception_rescue_test.rb +0 -55
  146. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  147. data/test/acceptance/expected_invocation_count_test.rb +0 -232
  148. data/test/acceptance/failure_messages_test.rb +0 -64
  149. data/test/acceptance/issue_65_test.rb +0 -63
  150. data/test/acceptance/issue_70_test.rb +0 -55
  151. data/test/acceptance/mocha_example_test.rb +0 -98
  152. data/test/acceptance/mocha_test_result_test.rb +0 -84
  153. data/test/acceptance/mock_test.rb +0 -100
  154. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  155. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  156. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  157. data/test/acceptance/optional_parameters_test.rb +0 -70
  158. data/test/acceptance/parameter_matcher_test.rb +0 -337
  159. data/test/acceptance/partial_mocks_test.rb +0 -47
  160. data/test/acceptance/prepend_test.rb +0 -88
  161. data/test/acceptance/raise_exception_test.rb +0 -39
  162. data/test/acceptance/return_value_test.rb +0 -52
  163. data/test/acceptance/sequence_test.rb +0 -192
  164. data/test/acceptance/states_test.rb +0 -70
  165. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  166. data/test/acceptance/stub_any_instance_method_test.rb +0 -238
  167. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  168. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  169. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  170. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  171. data/test/acceptance/stub_everything_test.rb +0 -56
  172. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  173. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  174. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  175. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  176. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -75
  177. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  178. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  179. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  180. data/test/acceptance/stub_module_method_test.rb +0 -163
  181. data/test/acceptance/stub_test.rb +0 -52
  182. data/test/acceptance/stubba_example_test.rb +0 -102
  183. data/test/acceptance/stubba_test_result_test.rb +0 -66
  184. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  185. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  186. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  187. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  188. data/test/acceptance/stubbing_nil_test.rb +0 -59
  189. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -130
  190. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  191. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  192. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  193. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  194. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  195. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  196. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  197. data/test/acceptance/throw_test.rb +0 -45
  198. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  199. data/test/acceptance/unstubbing_test.rb +0 -168
  200. data/test/assertions.rb +0 -6
  201. data/test/deprecation_disabler.rb +0 -15
  202. data/test/execution_point.rb +0 -36
  203. data/test/integration/mini_test_test.rb +0 -8
  204. data/test/integration/shared_tests.rb +0 -174
  205. data/test/integration/test_unit_test.rb +0 -8
  206. data/test/method_definer.rb +0 -24
  207. data/test/mini_test_result.rb +0 -90
  208. data/test/minitest_result.rb +0 -49
  209. data/test/simple_counter.rb +0 -13
  210. data/test/test_helper.rb +0 -50
  211. data/test/test_runner.rb +0 -58
  212. data/test/test_unit_result.rb +0 -20
  213. data/test/unit/any_instance_method_test.rb +0 -132
  214. data/test/unit/array_inspect_test.rb +0 -16
  215. data/test/unit/backtrace_filter_test.rb +0 -19
  216. data/test/unit/cardinality_test.rb +0 -56
  217. data/test/unit/central_test.rb +0 -100
  218. data/test/unit/change_state_side_effect_test.rb +0 -41
  219. data/test/unit/class_method_test.rb +0 -223
  220. data/test/unit/class_methods_test.rb +0 -40
  221. data/test/unit/configuration_test.rb +0 -38
  222. data/test/unit/date_time_inspect_test.rb +0 -21
  223. data/test/unit/exception_raiser_test.rb +0 -42
  224. data/test/unit/expectation_list_test.rb +0 -82
  225. data/test/unit/expectation_test.rb +0 -497
  226. data/test/unit/hash_inspect_test.rb +0 -16
  227. data/test/unit/hooks_test.rb +0 -29
  228. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  229. data/test/unit/method_matcher_test.rb +0 -28
  230. data/test/unit/mock_test.rb +0 -341
  231. data/test/unit/mockery_test.rb +0 -151
  232. data/test/unit/module_methods_test.rb +0 -19
  233. data/test/unit/multiple_yields_test.rb +0 -18
  234. data/test/unit/no_yields_test.rb +0 -18
  235. data/test/unit/object_inspect_test.rb +0 -38
  236. data/test/unit/object_methods_test.rb +0 -46
  237. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  238. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  239. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  240. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  241. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  242. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  243. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  244. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  245. data/test/unit/parameter_matchers/includes_test.rb +0 -59
  246. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  247. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  248. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  249. data/test/unit/parameter_matchers/not_test.rb +0 -26
  250. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  251. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  252. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  253. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  254. data/test/unit/parameters_matcher_test.rb +0 -121
  255. data/test/unit/receivers_test.rb +0 -66
  256. data/test/unit/return_values_test.rb +0 -63
  257. data/test/unit/sequence_test.rb +0 -104
  258. data/test/unit/single_return_value_test.rb +0 -14
  259. data/test/unit/single_yield_test.rb +0 -18
  260. data/test/unit/state_machine_test.rb +0 -98
  261. data/test/unit/string_inspect_test.rb +0 -11
  262. data/test/unit/thrower_test.rb +0 -20
  263. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,192 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class SequenceTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_constrain_invocations_to_occur_in_expected_order
17
- test_result = run_as_test do
18
- mock = mock()
19
- sequence = sequence('one')
20
-
21
- mock.expects(:first).in_sequence(sequence)
22
- mock.expects(:second).in_sequence(sequence)
23
-
24
- mock.second
25
- mock.first
26
- end
27
- assert_failed(test_result)
28
- end
29
-
30
- def test_should_allow_invocations_in_sequence
31
- test_result = run_as_test do
32
- mock = mock()
33
- sequence = sequence('one')
34
-
35
- mock.expects(:first).in_sequence(sequence)
36
- mock.expects(:second).in_sequence(sequence)
37
-
38
- mock.first
39
- mock.second
40
- end
41
- assert_passed(test_result)
42
- end
43
-
44
- def test_should_constrain_invocations_to_occur_in_expected_order_even_if_expected_on_different_mocks
45
- test_result = run_as_test do
46
- mock_one = mock('1')
47
- mock_two = mock('2')
48
- sequence = sequence('one')
49
-
50
- mock_one.expects(:first).in_sequence(sequence)
51
- mock_two.expects(:second).in_sequence(sequence)
52
-
53
- mock_two.second
54
- mock_one.first
55
- end
56
- assert_failed(test_result)
57
- end
58
-
59
- def test_should_allow_invocations_in_sequence_even_if_expected_on_different_mocks
60
- test_result = run_as_test do
61
- mock_one = mock('1')
62
- mock_two = mock('2')
63
- sequence = sequence('one')
64
-
65
- mock_one.expects(:first).in_sequence(sequence)
66
- mock_two.expects(:second).in_sequence(sequence)
67
-
68
- mock_one.first
69
- mock_two.second
70
- end
71
- assert_passed(test_result)
72
- end
73
-
74
- def test_should_constrain_invocations_to_occur_in_expected_order_even_if_expected_on_partial_mocks
75
- test_result = run_as_test do
76
- partial_mock_one = "1"
77
- partial_mock_two = "2"
78
- sequence = sequence('one')
79
-
80
- partial_mock_one.expects(:first).in_sequence(sequence)
81
- partial_mock_two.expects(:second).in_sequence(sequence)
82
-
83
- partial_mock_two.second
84
- partial_mock_one.first
85
- end
86
- assert_failed(test_result)
87
- end
88
-
89
- def test_should_allow_invocations_in_sequence_even_if_expected_on_partial_mocks
90
- test_result = run_as_test do
91
- partial_mock_one = "1"
92
- partial_mock_two = "2"
93
- sequence = sequence('one')
94
-
95
- partial_mock_one.expects(:first).in_sequence(sequence)
96
- partial_mock_two.expects(:second).in_sequence(sequence)
97
-
98
- partial_mock_one.first
99
- partial_mock_two.second
100
- end
101
- assert_passed(test_result)
102
- end
103
-
104
- def test_should_allow_stub_expectations_to_be_skipped_in_sequence
105
- test_result = run_as_test do
106
- mock = mock()
107
- sequence = sequence('one')
108
-
109
- mock.expects(:first).in_sequence(sequence)
110
- mock.stubs(:second).in_sequence(sequence)
111
- mock.expects(:third).in_sequence(sequence)
112
-
113
- mock.first
114
- mock.third
115
- end
116
- assert_passed(test_result)
117
- end
118
-
119
- def test_should_regard_sequences_as_independent_of_each_other
120
- test_result = run_as_test do
121
- mock = mock()
122
- sequence_one = sequence('one')
123
- sequence_two = sequence('two')
124
-
125
- mock.expects(:first).in_sequence(sequence_one)
126
- mock.expects(:second).in_sequence(sequence_one)
127
-
128
- mock.expects(:third).in_sequence(sequence_two)
129
- mock.expects(:fourth).in_sequence(sequence_two)
130
-
131
- mock.first
132
- mock.third
133
- mock.second
134
- mock.fourth
135
- end
136
- assert_passed(test_result)
137
- end
138
-
139
- def test_should_include_sequence_in_failure_message
140
- test_result = run_as_test do
141
- mock = mock()
142
- sequence = sequence('one')
143
-
144
- mock.expects(:first).in_sequence(sequence)
145
- mock.expects(:second).in_sequence(sequence)
146
-
147
- mock.second
148
- mock.first
149
- end
150
- assert_failed(test_result)
151
- assert_match Regexp.new("in sequence 'one'"), test_result.failures.first.message
152
- end
153
-
154
- def test_should_allow_expectations_to_be_in_more_than_one_sequence
155
- test_result = run_as_test do
156
- mock = mock()
157
- sequence_one = sequence('one')
158
- sequence_two = sequence('two')
159
-
160
- mock.expects(:first).in_sequence(sequence_one)
161
- mock.expects(:second).in_sequence(sequence_two)
162
- mock.expects(:third).in_sequence(sequence_one).in_sequence(sequence_two)
163
-
164
- mock.first
165
- mock.third
166
- mock.second
167
- end
168
- assert_failed(test_result)
169
- assert_match Regexp.new("in sequence 'one'"), test_result.failures.first.message
170
- assert_match Regexp.new("in sequence 'two'"), test_result.failures.first.message
171
- end
172
-
173
- def test_should_have_shortcut_for_expectations_to_be_in_more_than_one_sequence
174
- test_result = run_as_test do
175
- mock = mock()
176
- sequence_one = sequence('one')
177
- sequence_two = sequence('two')
178
-
179
- mock.expects(:first).in_sequence(sequence_one)
180
- mock.expects(:second).in_sequence(sequence_two)
181
- mock.expects(:third).in_sequence(sequence_one, sequence_two)
182
-
183
- mock.first
184
- mock.third
185
- mock.second
186
- end
187
- assert_failed(test_result)
188
- assert_match Regexp.new("in sequence 'one'"), test_result.failures.first.message
189
- assert_match Regexp.new("in sequence 'two'"), test_result.failures.first.message
190
- end
191
-
192
- end
@@ -1,70 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StatesTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_constrain_expectations_to_occur_within_a_given_state
17
- test_result = run_as_test do
18
- mock = mock()
19
- readiness = states('readiness')
20
-
21
- mock.stubs(:first).when(readiness.is('ready'))
22
- mock.stubs(:second).then(readiness.is('ready'))
23
-
24
- mock.first
25
- end
26
- assert_failed(test_result)
27
- end
28
-
29
- def test_should_allow_expectations_to_occur_in_correct_state
30
- test_result = run_as_test do
31
- mock = mock()
32
- readiness = states('readiness')
33
-
34
- mock.stubs(:first).when(readiness.is('ready'))
35
- mock.stubs(:second).then(readiness.is('ready'))
36
-
37
- mock.second
38
- mock.first
39
- end
40
- assert_passed(test_result)
41
- end
42
-
43
- def test_should_be_able_to_start_in_a_specific_state
44
- test_result = run_as_test do
45
- mock = mock()
46
- readiness = states('readiness')
47
-
48
- mock.stubs(:first).when(readiness.is('ready'))
49
-
50
- readiness.starts_as('ready')
51
- mock.first
52
- end
53
- assert_passed(test_result)
54
- end
55
-
56
- def test_should_switch_state_when_method_raises_an_exception
57
- test_result = run_as_test do
58
- mock = mock()
59
- readiness = states('readiness')
60
-
61
- mock.expects(:first).raises().then(readiness.is('ready'))
62
- mock.expects(:second).when(readiness.is('ready'))
63
-
64
- mock.first rescue nil
65
- mock.second
66
- end
67
- assert_passed(test_result)
68
- end
69
-
70
- end
@@ -1,34 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubAnyInstanceMethodDefinedOnSuperclassTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_stub_method_and_leave_it_unchanged_after_test
17
- superklass = Class.new do
18
- def my_superclass_method
19
- :original_return_value
20
- end
21
- public :my_superclass_method
22
- end
23
- klass = Class.new(superklass)
24
- instance = klass.new
25
- assert_snapshot_unchanged(instance) do
26
- test_result = run_as_test do
27
- superklass.any_instance.stubs(:my_superclass_method).returns(:new_return_value)
28
- assert_equal :new_return_value, instance.my_superclass_method
29
- end
30
- assert_passed(test_result)
31
- end
32
- assert_equal :original_return_value, instance.my_superclass_method
33
- end
34
- end
@@ -1,238 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubAnyInstanceMethodTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_stub_public_method_within_test
17
- klass = Class.new do
18
- def my_instance_method
19
- :original_return_value
20
- end
21
- end
22
- instance = klass.new
23
- test_result = run_as_test do
24
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
25
- assert_method_visiblity instance, :my_instance_method, :public
26
- assert_equal :new_return_value, instance.my_instance_method
27
- end
28
- assert_passed(test_result)
29
- end
30
-
31
- def test_should_leave_stubbed_public_method_unchanged_after_test
32
- klass = Class.new do
33
- def my_instance_method
34
- :original_return_value
35
- end
36
- public :my_instance_method
37
- def self.public(*args); end
38
- end
39
- instance = klass.new
40
- run_as_test do
41
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
42
- end
43
- assert instance.public_methods(false).any? { |m| m.to_s == 'my_instance_method' }
44
- assert_equal :original_return_value, instance.my_instance_method
45
- end
46
-
47
- def test_should_leave_stubbed_protected_method_unchanged_after_test
48
- klass = Class.new do
49
- def my_instance_method
50
- :original_return_value
51
- end
52
- protected :my_instance_method
53
- def self.protected(*args); end
54
- def my_unprotected_instance_method
55
- my_instance_method
56
- end
57
- end
58
- instance = klass.new
59
- run_as_test do
60
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
61
- end
62
- assert instance.protected_methods(false).any? { |m| m.to_s == 'my_instance_method' }
63
- assert_equal :original_return_value, instance.my_unprotected_instance_method
64
- end
65
-
66
- def test_should_stub_protected_method_within_test
67
- klass = Class.new do
68
- def my_instance_method
69
- :original_return_value
70
- end
71
- protected :my_instance_method
72
- def self.protected(*args); end
73
- def my_unprotected_instance_method
74
- my_instance_method
75
- end
76
- end
77
- instance = klass.new
78
- test_result = run_as_test do
79
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
80
- assert_method_visiblity instance, :my_instance_method, :protected
81
- end
82
- assert_passed(test_result)
83
- end
84
-
85
- def test_should_leave_stubbed_private_method_unchanged_after_test
86
- klass = Class.new do
87
- def my_instance_method
88
- :original_return_value
89
- end
90
- private :my_instance_method
91
- def self.private(*args); end
92
- end
93
- instance = klass.new
94
- run_as_test do
95
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
96
- end
97
- assert instance.private_methods(false).any? { |m| m.to_s == 'my_instance_method' }
98
- assert_equal :original_return_value, instance.send(:my_instance_method)
99
- end
100
-
101
- def test_should_stub_private_method_within_test
102
- klass = Class.new do
103
- def my_instance_method
104
- :original_return_value
105
- end
106
- private :my_instance_method
107
- def self.private(*args); end
108
- end
109
- instance = klass.new
110
- test_result = run_as_test do
111
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
112
- assert_method_visiblity instance, :my_instance_method, :private
113
- end
114
- assert_passed(test_result)
115
- end
116
-
117
- def test_should_reset_expectations_after_test
118
- klass = Class.new do
119
- def my_instance_method
120
- :original_return_value
121
- end
122
- end
123
- run_as_test do
124
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
125
- end
126
-
127
- assert_equal 0, klass.any_instance.mocha.__expectations__.length
128
- end
129
-
130
- def test_should_be_able_to_stub_a_superclass_method
131
- superklass = Class.new do
132
- def my_superclass_method
133
- :original_return_value
134
- end
135
- end
136
- klass = Class.new(superklass)
137
- instance = klass.new
138
- test_result = run_as_test do
139
- klass.any_instance.stubs(:my_superclass_method).returns(:new_return_value)
140
- assert_equal :new_return_value, instance.my_superclass_method
141
- end
142
- assert_passed(test_result)
143
- assert instance.public_methods(true).any? { |m| m.to_s == 'my_superclass_method' }
144
- assert !klass.public_methods(false).any? { |m| m.to_s == 'my_superclass_method' }
145
- assert_equal :original_return_value, instance.my_superclass_method
146
- end
147
-
148
- def test_should_be_able_to_stub_method_if_ruby18_public_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
149
- ruby18_klass = Class.new do
150
- class << self
151
- def public_instance_methods(include_superclass = true)
152
- ['my_instance_method']
153
- end
154
- end
155
- end
156
- test_result = run_as_test do
157
- ruby18_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
158
- assert_equal :new_return_value, ruby18_klass.new.my_instance_method
159
- end
160
- assert_passed(test_result)
161
- end
162
-
163
- def test_should_be_able_to_stub_method_if_ruby19_public_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
164
- ruby19_klass = Class.new do
165
- class << self
166
- def public_instance_methods(include_superclass = true)
167
- [:my_instance_method]
168
- end
169
- end
170
- end
171
- test_result = run_as_test do
172
- ruby19_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
173
- assert_equal :new_return_value, ruby19_klass.new.my_instance_method
174
- end
175
- assert_passed(test_result)
176
- end
177
-
178
- def test_should_be_able_to_stub_method_if_ruby18_protected_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
179
- ruby18_klass = Class.new do
180
- class << self
181
- def protected_instance_methods(include_superclass = true)
182
- ['my_instance_method']
183
- end
184
- end
185
- end
186
- test_result = run_as_test do
187
- ruby18_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
188
- assert_equal :new_return_value, ruby18_klass.new.my_instance_method
189
- end
190
- assert_passed(test_result)
191
- end
192
-
193
- def test_should_be_able_to_stub_method_if_ruby19_protected_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
194
- ruby19_klass = Class.new do
195
- class << self
196
- def protected_instance_methods(include_superclass = true)
197
- [:my_instance_method]
198
- end
199
- end
200
- end
201
- test_result = run_as_test do
202
- ruby19_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
203
- assert_equal :new_return_value, ruby19_klass.new.my_instance_method
204
- end
205
- assert_passed(test_result)
206
- end
207
-
208
- def test_should_be_able_to_stub_method_if_ruby18_private_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
209
- ruby18_klass = Class.new do
210
- class << self
211
- def private_instance_methods(include_superclass = true)
212
- ['my_instance_method']
213
- end
214
- end
215
- end
216
- test_result = run_as_test do
217
- ruby18_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
218
- assert_equal :new_return_value, ruby18_klass.new.my_instance_method
219
- end
220
- assert_passed(test_result)
221
- end
222
-
223
- def test_should_be_able_to_stub_method_if_ruby19_private_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
224
- ruby19_klass = Class.new do
225
- class << self
226
- def private_instance_methods(include_superclass = true)
227
- [:my_instance_method]
228
- end
229
- end
230
- end
231
- test_result = run_as_test do
232
- ruby19_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
233
- assert_equal :new_return_value, ruby19_klass.new.my_instance_method
234
- end
235
- assert_passed(test_result)
236
- end
237
-
238
- end
@@ -1,106 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubClassMethodDefinedOnActiveRecordAssociationProxyTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_be_able_to_stub_method_if_ruby18_public_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
17
- ruby18_klass = Class.new do
18
- class << self
19
- def public_methods(include_superclass = true)
20
- ['my_class_method']
21
- end
22
- end
23
- end
24
- test_result = run_as_test do
25
- ruby18_klass.stubs(:my_class_method).returns(:new_return_value)
26
- assert_equal :new_return_value, ruby18_klass.my_class_method
27
- end
28
- assert_passed(test_result)
29
- end
30
-
31
- def test_should_be_able_to_stub_method_if_ruby19_public_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
32
- ruby19_klass = Class.new do
33
- class << self
34
- def public_methods(include_superclass = true)
35
- [:my_class_method]
36
- end
37
- end
38
- end
39
- test_result = run_as_test do
40
- ruby19_klass.stubs(:my_class_method).returns(:new_return_value)
41
- assert_equal :new_return_value, ruby19_klass.my_class_method
42
- end
43
- assert_passed(test_result)
44
- end
45
-
46
- def test_should_be_able_to_stub_method_if_ruby18_protected_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
47
- ruby18_klass = Class.new do
48
- class << self
49
- def protected_methods(include_superclass = true)
50
- ['my_class_method']
51
- end
52
- end
53
- end
54
- test_result = run_as_test do
55
- ruby18_klass.stubs(:my_class_method).returns(:new_return_value)
56
- assert_equal :new_return_value, ruby18_klass.my_class_method
57
- end
58
- assert_passed(test_result)
59
- end
60
-
61
- def test_should_be_able_to_stub_method_if_ruby19_protected_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
62
- ruby19_klass = Class.new do
63
- class << self
64
- def protected_methods(include_superclass = true)
65
- [:my_class_method]
66
- end
67
- end
68
- end
69
- test_result = run_as_test do
70
- ruby19_klass.stubs(:my_class_method).returns(:new_return_value)
71
- assert_equal :new_return_value, ruby19_klass.my_class_method
72
- end
73
- assert_passed(test_result)
74
- end
75
-
76
- def test_should_be_able_to_stub_method_if_ruby18_private_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
77
- ruby18_klass = Class.new do
78
- class << self
79
- def private_methods(include_superclass = true)
80
- ['my_class_method']
81
- end
82
- end
83
- end
84
- test_result = run_as_test do
85
- ruby18_klass.stubs(:my_class_method).returns(:new_return_value)
86
- assert_equal :new_return_value, ruby18_klass.my_class_method
87
- end
88
- assert_passed(test_result)
89
- end
90
-
91
- def test_should_be_able_to_stub_method_if_ruby19_private_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
92
- ruby19_klass = Class.new do
93
- class << self
94
- def private_methods(include_superclass = true)
95
- [:my_class_method]
96
- end
97
- end
98
- end
99
- test_result = run_as_test do
100
- ruby19_klass.stubs(:my_class_method).returns(:new_return_value)
101
- assert_equal :new_return_value, ruby19_klass.my_class_method
102
- end
103
- assert_passed(test_result)
104
- end
105
-
106
- end