mocha 1.2.1 → 1.16.1

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 (265) 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/Gemfile +29 -0
  8. data/README.md +104 -106
  9. data/RELEASE.md +277 -1
  10. data/Rakefile +46 -44
  11. data/gemfiles/Gemfile.minitest.latest +1 -0
  12. data/gemfiles/Gemfile.test-unit.latest +2 -5
  13. data/init.rb +1 -3
  14. data/lib/mocha/any_instance_method.rb +9 -62
  15. data/lib/mocha/api.rb +144 -68
  16. data/lib/mocha/argument_iterator.rb +4 -8
  17. data/lib/mocha/backtrace_filter.rb +1 -5
  18. data/lib/mocha/block_matcher.rb +31 -0
  19. data/lib/mocha/cardinality.rb +60 -49
  20. data/lib/mocha/central.rb +21 -12
  21. data/lib/mocha/change_state_side_effect.rb +0 -4
  22. data/lib/mocha/class_methods.rb +19 -21
  23. data/lib/mocha/configuration.rb +372 -18
  24. data/lib/mocha/debug.rb +3 -2
  25. data/lib/mocha/deprecation.rb +8 -11
  26. data/lib/mocha/detection/mini_test.rb +0 -2
  27. data/lib/mocha/detection/test_unit.rb +3 -5
  28. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  29. data/lib/mocha/exception_raiser.rb +4 -6
  30. data/lib/mocha/expectation.rb +125 -89
  31. data/lib/mocha/expectation_error.rb +1 -1
  32. data/lib/mocha/expectation_error_factory.rb +0 -1
  33. data/lib/mocha/expectation_list.rb +7 -11
  34. data/lib/mocha/hooks.rb +1 -3
  35. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  36. data/lib/mocha/inspect.rb +30 -38
  37. data/lib/mocha/instance_method.rb +11 -8
  38. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  39. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  40. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  41. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  44. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  45. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  46. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  47. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  48. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  49. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  50. data/lib/mocha/integration/mini_test.rb +7 -0
  51. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  52. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  53. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  54. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  55. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  56. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  57. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  58. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  59. data/lib/mocha/integration/test_unit.rb +7 -2
  60. data/lib/mocha/integration.rb +2 -5
  61. data/lib/mocha/invocation.rb +86 -0
  62. data/lib/mocha/is_a.rb +0 -2
  63. data/lib/mocha/logger.rb +0 -4
  64. data/lib/mocha/macos_version.rb +5 -0
  65. data/lib/mocha/method_matcher.rb +1 -5
  66. data/lib/mocha/minitest.rb +9 -0
  67. data/lib/mocha/mock.rb +102 -58
  68. data/lib/mocha/mockery.rb +70 -99
  69. data/lib/mocha/names.rb +2 -12
  70. data/lib/mocha/not_initialized_error.rb +7 -0
  71. data/lib/mocha/object_methods.rb +25 -31
  72. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  73. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  74. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  75. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  76. data/lib/mocha/parameter_matchers/base.rb +6 -12
  77. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  78. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +15 -15
  79. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  80. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  81. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  82. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  83. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  84. data/lib/mocha/parameter_matchers/includes.rb +6 -7
  85. data/lib/mocha/parameter_matchers/instance_methods.rb +18 -0
  86. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  87. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  88. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  89. data/lib/mocha/parameter_matchers/not.rb +2 -7
  90. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  91. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  92. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  93. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  94. data/lib/mocha/parameter_matchers.rb +3 -4
  95. data/lib/mocha/parameters_matcher.rb +6 -9
  96. data/lib/mocha/raised_exception.rb +11 -0
  97. data/lib/mocha/receivers.rb +10 -14
  98. data/lib/mocha/return_values.rb +4 -8
  99. data/lib/mocha/ruby_version.rb +8 -1
  100. data/lib/mocha/sequence.rb +4 -9
  101. data/lib/mocha/setup.rb +5 -0
  102. data/lib/mocha/single_return_value.rb +2 -5
  103. data/lib/mocha/state_machine.rb +33 -46
  104. data/lib/mocha/stubbed_method.rb +124 -0
  105. data/lib/mocha/stubbing_error.rb +2 -13
  106. data/lib/mocha/test_unit.rb +8 -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/mocha.gemspec +14 -65
  112. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  113. data/yard-templates/default/layout/html/setup.rb +2 -3
  114. metadata +25 -247
  115. data/bin/build-matrix +0 -70
  116. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  117. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  118. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  119. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  120. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  121. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  122. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  123. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  124. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  125. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  126. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  127. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  128. data/lib/mocha/class_method.rb +0 -119
  129. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +0 -58
  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_272_test.rb +0 -52
  150. data/test/acceptance/issue_65_test.rb +0 -63
  151. data/test/acceptance/issue_70_test.rb +0 -55
  152. data/test/acceptance/mocha_example_test.rb +0 -98
  153. data/test/acceptance/mocha_test_result_test.rb +0 -84
  154. data/test/acceptance/mock_test.rb +0 -100
  155. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  156. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  157. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  158. data/test/acceptance/optional_parameters_test.rb +0 -70
  159. data/test/acceptance/parameter_matcher_test.rb +0 -337
  160. data/test/acceptance/partial_mocks_test.rb +0 -47
  161. data/test/acceptance/prepend_test.rb +0 -89
  162. data/test/acceptance/raise_exception_test.rb +0 -39
  163. data/test/acceptance/return_value_test.rb +0 -52
  164. data/test/acceptance/sequence_test.rb +0 -192
  165. data/test/acceptance/states_test.rb +0 -70
  166. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  167. data/test/acceptance/stub_any_instance_method_test.rb +0 -280
  168. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  169. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  170. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  171. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  172. data/test/acceptance/stub_everything_test.rb +0 -56
  173. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  174. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  175. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  176. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  177. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -78
  178. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  179. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  180. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  181. data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -39
  182. data/test/acceptance/stub_module_method_test.rb +0 -163
  183. data/test/acceptance/stub_test.rb +0 -52
  184. data/test/acceptance/stubba_example_test.rb +0 -102
  185. data/test/acceptance/stubba_test_result_test.rb +0 -66
  186. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  187. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  188. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  189. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  190. data/test/acceptance/stubbing_nil_test.rb +0 -61
  191. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -143
  192. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  193. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  194. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  195. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  196. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  197. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  198. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  199. data/test/acceptance/throw_test.rb +0 -45
  200. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  201. data/test/acceptance/unstubbing_test.rb +0 -168
  202. data/test/assertions.rb +0 -8
  203. data/test/deprecation_disabler.rb +0 -15
  204. data/test/execution_point.rb +0 -36
  205. data/test/integration/mini_test_test.rb +0 -8
  206. data/test/integration/shared_tests.rb +0 -174
  207. data/test/integration/test_unit_test.rb +0 -8
  208. data/test/method_definer.rb +0 -24
  209. data/test/mini_test_result.rb +0 -90
  210. data/test/minitest_result.rb +0 -49
  211. data/test/simple_counter.rb +0 -13
  212. data/test/test_helper.rb +0 -50
  213. data/test/test_runner.rb +0 -58
  214. data/test/test_unit_result.rb +0 -20
  215. data/test/unit/any_instance_method_test.rb +0 -134
  216. data/test/unit/array_inspect_test.rb +0 -16
  217. data/test/unit/backtrace_filter_test.rb +0 -19
  218. data/test/unit/cardinality_test.rb +0 -56
  219. data/test/unit/central_test.rb +0 -100
  220. data/test/unit/change_state_side_effect_test.rb +0 -41
  221. data/test/unit/class_method_test.rb +0 -225
  222. data/test/unit/class_methods_test.rb +0 -40
  223. data/test/unit/configuration_test.rb +0 -38
  224. data/test/unit/date_time_inspect_test.rb +0 -21
  225. data/test/unit/exception_raiser_test.rb +0 -42
  226. data/test/unit/expectation_list_test.rb +0 -82
  227. data/test/unit/expectation_test.rb +0 -497
  228. data/test/unit/hash_inspect_test.rb +0 -16
  229. data/test/unit/hooks_test.rb +0 -29
  230. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  231. data/test/unit/method_matcher_test.rb +0 -28
  232. data/test/unit/mock_test.rb +0 -342
  233. data/test/unit/mockery_test.rb +0 -151
  234. data/test/unit/module_methods_test.rb +0 -19
  235. data/test/unit/multiple_yields_test.rb +0 -18
  236. data/test/unit/no_yields_test.rb +0 -18
  237. data/test/unit/object_inspect_test.rb +0 -39
  238. data/test/unit/object_methods_test.rb +0 -46
  239. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  240. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  241. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  242. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  243. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  244. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  245. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  246. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  247. data/test/unit/parameter_matchers/includes_test.rb +0 -102
  248. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  249. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  250. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  251. data/test/unit/parameter_matchers/not_test.rb +0 -26
  252. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  253. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  254. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  255. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  256. data/test/unit/parameters_matcher_test.rb +0 -121
  257. data/test/unit/receivers_test.rb +0 -66
  258. data/test/unit/return_values_test.rb +0 -63
  259. data/test/unit/sequence_test.rb +0 -104
  260. data/test/unit/single_return_value_test.rb +0 -14
  261. data/test/unit/single_yield_test.rb +0 -18
  262. data/test/unit/state_machine_test.rb +0 -98
  263. data/test/unit/string_inspect_test.rb +0 -11
  264. data/test/unit/thrower_test.rb +0 -20
  265. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,47 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class PartialMockTest < 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_pass_if_all_expectations_are_satisfied
17
- test_result = run_as_test do
18
- partial_mock_one = "partial_mock_one"
19
- partial_mock_two = "partial_mock_two"
20
-
21
- partial_mock_one.expects(:first)
22
- partial_mock_one.expects(:second)
23
- partial_mock_two.expects(:third)
24
-
25
- partial_mock_one.first
26
- partial_mock_one.second
27
- partial_mock_two.third
28
- end
29
- assert_passed(test_result)
30
- end
31
-
32
- def test_should_fail_if_all_expectations_are_not_satisfied
33
- test_result = run_as_test do
34
- partial_mock_one = "partial_mock_one"
35
- partial_mock_two = "partial_mock_two"
36
-
37
- partial_mock_one.expects(:first)
38
- partial_mock_one.expects(:second)
39
- partial_mock_two.expects(:third)
40
-
41
- partial_mock_one.first
42
- partial_mock_two.third
43
- end
44
- assert_failed(test_result)
45
- end
46
-
47
- end
@@ -1,89 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
- require 'mocha/ruby_version'
4
-
5
- class PrependTest < Mocha::TestCase
6
-
7
- include AcceptanceTest
8
-
9
- def setup
10
- setup_acceptance_test
11
- end
12
-
13
- def teardown
14
- teardown_acceptance_test
15
- end
16
-
17
- if Mocha::RUBY_V2_PLUS
18
-
19
- module Mod1
20
- def my_method
21
- super + " World"
22
- end
23
- end
24
-
25
- module Mod2
26
- def my_method
27
- super + " Wide"
28
- end
29
- end
30
-
31
- class Klass1
32
- prepend Mod1
33
- prepend Mod2
34
-
35
- def my_method
36
- "Hello"
37
- end
38
- end
39
-
40
- class Klass2
41
- class << self
42
- prepend Mod1
43
- prepend Mod2
44
-
45
- def my_method
46
- "Hello"
47
- end
48
- end
49
- end
50
-
51
- def test_stubbing_any_instance_with_multiple_prepended_methods
52
- assert_snapshot_unchanged(Klass1) do
53
- test_result = run_as_test do
54
- Klass1.any_instance.stubs(:my_method).returns("Bye World")
55
- assert_equal "Bye World", Klass1.new.my_method
56
- end
57
- assert_passed(test_result)
58
- end
59
- assert_equal "Hello World Wide", Klass1.new.my_method
60
- end
61
-
62
- def test_stubbing_instance_with_multiple_prepended_methods
63
- object = Klass1.new
64
-
65
- assert_snapshot_unchanged(object) do
66
- test_result = run_as_test do
67
- object.stubs(:my_method).returns("Bye World")
68
- assert_equal "Bye World", object.my_method
69
- assert_equal "Hello World Wide", Klass1.new.my_method
70
- end
71
- assert_passed(test_result)
72
- end
73
- assert_equal "Hello World Wide", object.my_method
74
- end
75
-
76
- def test_stubbing_a_prepended_class_method
77
- assert_snapshot_unchanged(Klass2) do
78
- test_result = run_as_test do
79
- Klass2.stubs(:my_method).returns("Bye World")
80
- assert_equal "Bye World", Klass2.my_method
81
- end
82
- assert_passed(test_result)
83
- end
84
- assert_equal "Hello World Wide", Klass2.my_method
85
- end
86
-
87
- end
88
-
89
- end
@@ -1,39 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class RaiseExceptionTest < 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_raise_exception
17
- exception_class = Class.new(StandardError)
18
- test_result = run_as_test do
19
- foo = stub('foo')
20
- foo.stubs(:bar).raises(exception_class, "my-message")
21
- exception = assert_raises(exception_class) { foo.bar }
22
- assert_equal "my-message", exception.message
23
- end
24
- assert_passed(test_result)
25
- end
26
-
27
- def test_should_raise_two_different_exceptions
28
- exception_one_class = Class.new(StandardError)
29
- exception_two_class = Class.new(StandardError)
30
- test_result = run_as_test do
31
- foo = stub('foo')
32
- foo.stubs(:bar).raises(exception_one_class).then.raises(exception_two_class)
33
- assert_raises(exception_one_class) { foo.bar }
34
- assert_raises(exception_two_class) { foo.bar }
35
- end
36
- assert_passed(test_result)
37
- end
38
-
39
- end
@@ -1,52 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ReturnValueTest < 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_build_mock_and_explicitly_add_an_expectation_with_a_return_value
17
- test_result = run_as_test do
18
- foo = mock('foo')
19
- foo.expects(:bar).returns('bar')
20
- assert_equal 'bar', foo.bar
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_build_mock_incorporating_two_expectations_with_return_values
26
- test_result = run_as_test do
27
- foo = mock('foo', :bar => 'bar', :baz => 'baz')
28
- assert_equal 'bar', foo.bar
29
- assert_equal 'baz', foo.baz
30
- end
31
- assert_passed(test_result)
32
- end
33
-
34
- def test_should_build_stub_and_explicitly_add_an_expectation_with_a_return_value
35
- test_result = run_as_test do
36
- foo = stub('foo')
37
- foo.stubs(:bar).returns('bar')
38
- assert_equal 'bar', foo.bar
39
- end
40
- assert_passed(test_result)
41
- end
42
-
43
- def test_should_build_stub_incorporating_two_expectations_with_return_values
44
- test_result = run_as_test do
45
- foo = stub('foo', :bar => 'bar', :baz => 'baz')
46
- assert_equal 'bar', foo.bar
47
- assert_equal 'baz', foo.baz
48
- end
49
- assert_passed(test_result)
50
- end
51
-
52
- end
@@ -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