mocha 0.9.12 → 0.10.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 (60) hide show
  1. data/Gemfile +3 -0
  2. data/Gemfile.minitest.1.3.0 +7 -0
  3. data/Gemfile.minitest.1.4.0 +7 -0
  4. data/Gemfile.minitest.1.4.1 +7 -0
  5. data/Gemfile.minitest.1.4.2 +7 -0
  6. data/Gemfile.minitest.2.0.0 +7 -0
  7. data/Gemfile.minitest.2.0.1 +7 -0
  8. data/Gemfile.minitest.2.3.0 +7 -0
  9. data/Gemfile.minitest.latest +7 -0
  10. data/Gemfile.test-unit.2.0.0 +8 -0
  11. data/Gemfile.test-unit.2.0.1 +7 -0
  12. data/Gemfile.test-unit.2.0.3 +7 -0
  13. data/Gemfile.test-unit.latest +7 -0
  14. data/README.rdoc +4 -0
  15. data/RELEASE.rdoc +22 -3
  16. data/Rakefile +17 -90
  17. data/init.rb +3 -0
  18. data/lib/mocha.rb +1 -1
  19. data/lib/mocha/central.rb +4 -4
  20. data/lib/mocha/class_method.rb +20 -20
  21. data/lib/mocha/expectation.rb +33 -6
  22. data/lib/mocha/instance_method.rb +17 -1
  23. data/lib/mocha/integration/mini_test.rb +17 -13
  24. data/lib/mocha/integration/mini_test/{version_201_to_202.rb → version_201_to_222.rb} +9 -9
  25. data/lib/mocha/integration/mini_test/version_230_to_251.rb +59 -0
  26. data/lib/mocha/integration/test_unit.rb +17 -13
  27. data/lib/mocha/integration/test_unit/{gem_version_203_to_209.rb → gem_version_203_to_220.rb} +8 -8
  28. data/lib/mocha/integration/test_unit/gem_version_230_to_233.rb +58 -0
  29. data/lib/mocha/mock.rb +14 -14
  30. data/lib/mocha/object.rb +1 -1
  31. data/lib/mocha/thrower.rb +15 -0
  32. data/lib/mocha/version.rb +3 -0
  33. data/mocha.gemspec +43 -0
  34. data/test/acceptance/acceptance_test_helper.rb +3 -0
  35. data/test/acceptance/expectations_on_multiple_methods_test.rb +55 -0
  36. data/test/acceptance/minitest_test.rb +12 -7
  37. data/test/acceptance/raise_exception_test.rb +39 -0
  38. data/test/acceptance/{stub_class_method_test.rb → stub_class_method_defined_on_active_record_association_proxy_test.rb} +3 -103
  39. data/test/acceptance/stub_class_method_defined_on_class_test.rb +72 -0
  40. data/test/acceptance/stub_class_method_defined_on_module_test.rb +75 -0
  41. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +75 -0
  42. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +93 -0
  43. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +69 -0
  44. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +66 -0
  45. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +75 -0
  46. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +75 -0
  47. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +75 -0
  48. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +70 -0
  49. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +72 -0
  50. data/test/acceptance/throw_test.rb +45 -0
  51. data/test/method_definer.rb +3 -3
  52. data/test/test_helper.rb +0 -6
  53. data/test/unit/central_test.rb +7 -3
  54. data/test/unit/class_method_test.rb +10 -10
  55. data/test/unit/mockery_test.rb +1 -0
  56. data/test/unit/thrower_test.rb +20 -0
  57. metadata +110 -33
  58. data/lib/mocha/metaclass.rb +0 -13
  59. data/test/acceptance/stub_instance_method_test.rb +0 -206
  60. data/test/unit/metaclass_test.rb +0 -22
@@ -0,0 +1,75 @@
1
+ require File.expand_path('../acceptance_test_helper', __FILE__)
2
+ require 'mocha'
3
+
4
+ class StubClassMethodDefinedOnSuperclassTest < Test::Unit::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_and_leave_it_unchanged_after_test
17
+ superklass = Class.new do
18
+ class << self
19
+ def my_class_method
20
+ :original_return_value
21
+ end
22
+ public :my_class_method
23
+ end
24
+ end
25
+ klass = Class.new(superklass)
26
+ assert_snapshot_unchanged(klass) do
27
+ test_result = run_as_test do
28
+ klass.stubs(:my_class_method).returns(:new_return_value)
29
+ assert_equal :new_return_value, klass.my_class_method
30
+ end
31
+ assert_passed(test_result)
32
+ end
33
+ assert_equal :original_return_value, klass.my_class_method
34
+ end
35
+
36
+ def test_should_stub_protected_method_and_leave_it_unchanged_after_test
37
+ superklass = Class.new do
38
+ class << self
39
+ def my_class_method
40
+ :original_return_value
41
+ end
42
+ protected :my_class_method
43
+ end
44
+ end
45
+ klass = Class.new(superklass)
46
+ assert_snapshot_unchanged(klass) do
47
+ test_result = run_as_test do
48
+ klass.stubs(:my_class_method).returns(:new_return_value)
49
+ assert_equal :new_return_value, klass.send(:my_class_method)
50
+ end
51
+ assert_passed(test_result)
52
+ end
53
+ assert_equal :original_return_value, klass.send(:my_class_method)
54
+ end
55
+
56
+ def test_should_stub_private_method_and_leave_it_unchanged_after_test
57
+ superklass = Class.new do
58
+ class << self
59
+ def my_class_method
60
+ :original_return_value
61
+ end
62
+ private :my_class_method
63
+ end
64
+ end
65
+ klass = Class.new(superklass)
66
+ assert_snapshot_unchanged(klass) do
67
+ test_result = run_as_test do
68
+ klass.stubs(:my_class_method).returns(:new_return_value)
69
+ assert_equal :new_return_value, klass.send(:my_class_method)
70
+ end
71
+ assert_passed(test_result)
72
+ end
73
+ assert_equal :original_return_value, klass.send(:my_class_method)
74
+ end
75
+ end
@@ -0,0 +1,93 @@
1
+ require File.expand_path('../acceptance_test_helper', __FILE__)
2
+ require 'mocha'
3
+
4
+ class StubInstanceMethodDefinedOnActiveRecordAssociationProxyTest < Test::Unit::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_exist
17
+ ruby18_instance = Class.new do
18
+ def public_methods(include_superclass = true)
19
+ ['my_instance_method']
20
+ end
21
+ end.new
22
+ test_result = run_as_test do
23
+ ruby18_instance.stubs(:my_instance_method).returns(:new_return_value)
24
+ assert_equal :new_return_value, ruby18_instance.my_instance_method
25
+ end
26
+ assert_passed(test_result)
27
+ end
28
+
29
+ def test_should_be_able_to_stub_method_if_ruby19_public_methods_include_method_but_method_does_not_exist
30
+ ruby19_instance = Class.new do
31
+ def public_methods(include_superclass = true)
32
+ [:my_instance_method]
33
+ end
34
+ end.new
35
+ test_result = run_as_test do
36
+ ruby19_instance.stubs(:my_instance_method).returns(:new_return_value)
37
+ assert_equal :new_return_value, ruby19_instance.my_instance_method
38
+ end
39
+ assert_passed(test_result)
40
+ end
41
+
42
+ def test_should_be_able_to_stub_method_if_ruby18_protected_methods_include_method_but_method_does_not_exist
43
+ ruby18_instance = Class.new do
44
+ def protected_methods(include_superclass = true)
45
+ ['my_instance_method']
46
+ end
47
+ end.new
48
+ test_result = run_as_test do
49
+ ruby18_instance.stubs(:my_instance_method).returns(:new_return_value)
50
+ assert_equal :new_return_value, ruby18_instance.my_instance_method
51
+ end
52
+ assert_passed(test_result)
53
+ end
54
+
55
+ def test_should_be_able_to_stub_method_if_ruby19_protected_methods_include_method_but_method_does_not_exist
56
+ ruby19_instance = Class.new do
57
+ def protected_methods(include_superclass = true)
58
+ [:my_instance_method]
59
+ end
60
+ end.new
61
+ test_result = run_as_test do
62
+ ruby19_instance.stubs(:my_instance_method).returns(:new_return_value)
63
+ assert_equal :new_return_value, ruby19_instance.my_instance_method
64
+ end
65
+ assert_passed(test_result)
66
+ end
67
+
68
+ def test_should_be_able_to_stub_method_if_ruby18_private_methods_include_method_but_method_does_not_exist
69
+ ruby18_instance = Class.new do
70
+ def private_methods(include_superclass = true)
71
+ ['my_instance_method']
72
+ end
73
+ end.new
74
+ test_result = run_as_test do
75
+ ruby18_instance.stubs(:my_instance_method).returns(:new_return_value)
76
+ assert_equal :new_return_value, ruby18_instance.my_instance_method
77
+ end
78
+ assert_passed(test_result)
79
+ end
80
+
81
+ def test_should_be_able_to_stub_method_if_ruby19_private_methods_include_method_but_method_does_not_exist
82
+ ruby19_instance = Class.new do
83
+ def private_methods(include_superclass = true)
84
+ [:my_instance_method]
85
+ end
86
+ end.new
87
+ test_result = run_as_test do
88
+ ruby19_instance.stubs(:my_instance_method).returns(:new_return_value)
89
+ assert_equal :new_return_value, ruby19_instance.my_instance_method
90
+ end
91
+ assert_passed(test_result)
92
+ end
93
+ end
@@ -0,0 +1,69 @@
1
+ require File.expand_path('../acceptance_test_helper', __FILE__)
2
+ require 'mocha'
3
+
4
+ class StubInstanceMethodDefinedOnClassAndAliasedTest < Test::Unit::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_and_leave_it_unchanged_after_test
17
+ instance = Class.new do
18
+ def my_instance_method
19
+ :original_return_value
20
+ end
21
+ public :my_instance_method
22
+ alias_method :my_aliased_method, :my_instance_method
23
+ end.new
24
+ assert_snapshot_unchanged(instance) do
25
+ test_result = run_as_test do
26
+ instance.stubs(:my_aliased_method).returns(:new_return_value)
27
+ assert_equal :new_return_value, instance.my_aliased_method
28
+ end
29
+ assert_passed(test_result)
30
+ end
31
+ assert_equal :original_return_value, instance.my_aliased_method
32
+ end
33
+
34
+ def test_should_stub_protected_method_and_leave_it_unchanged_after_test
35
+ instance = Class.new do
36
+ def my_instance_method
37
+ :original_return_value
38
+ end
39
+ protected :my_instance_method
40
+ alias_method :my_aliased_method, :my_instance_method
41
+ end.new
42
+ assert_snapshot_unchanged(instance) do
43
+ test_result = run_as_test do
44
+ instance.stubs(:my_aliased_method).returns(:new_return_value)
45
+ assert_equal :new_return_value, instance.send(:my_aliased_method)
46
+ end
47
+ assert_passed(test_result)
48
+ end
49
+ assert_equal :original_return_value, instance.send(:my_aliased_method)
50
+ end
51
+
52
+ def test_should_stub_private_method_and_leave_it_unchanged_after_test
53
+ instance = Class.new do
54
+ def my_instance_method
55
+ :original_return_value
56
+ end
57
+ private :my_instance_method
58
+ alias_method :my_aliased_method, :my_instance_method
59
+ end.new
60
+ assert_snapshot_unchanged(instance) do
61
+ test_result = run_as_test do
62
+ instance.stubs(:my_aliased_method).returns(:new_return_value)
63
+ assert_equal :new_return_value, instance.send(:my_aliased_method)
64
+ end
65
+ assert_passed(test_result)
66
+ end
67
+ assert_equal :original_return_value, instance.send(:my_aliased_method)
68
+ end
69
+ end
@@ -0,0 +1,66 @@
1
+ require File.expand_path('../acceptance_test_helper', __FILE__)
2
+ require 'mocha'
3
+
4
+ class StubInstanceMethodDefinedOnClassTest < Test::Unit::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_and_leave_it_unchanged_after_test
17
+ instance = Class.new do
18
+ def my_instance_method
19
+ :original_return_value
20
+ end
21
+ public :my_instance_method
22
+ end.new
23
+ assert_snapshot_unchanged(instance) do
24
+ test_result = run_as_test do
25
+ instance.stubs(:my_instance_method).returns(:new_return_value)
26
+ assert_equal :new_return_value, instance.my_instance_method
27
+ end
28
+ assert_passed(test_result)
29
+ end
30
+ assert_equal :original_return_value, instance.my_instance_method
31
+ end
32
+
33
+ def test_should_stub_protected_method_and_leave_it_unchanged_after_test
34
+ instance = Class.new do
35
+ def my_instance_method
36
+ :original_return_value
37
+ end
38
+ protected :my_instance_method
39
+ end.new
40
+ assert_snapshot_unchanged(instance) do
41
+ test_result = run_as_test do
42
+ instance.stubs(:my_instance_method).returns(:new_return_value)
43
+ assert_equal :new_return_value, instance.send(:my_instance_method)
44
+ end
45
+ assert_passed(test_result)
46
+ end
47
+ assert_equal :original_return_value, instance.send(:my_instance_method)
48
+ end
49
+
50
+ def test_should_stub_private_method_and_leave_it_unchanged_after_test
51
+ instance = Class.new do
52
+ def my_instance_method
53
+ :original_return_value
54
+ end
55
+ private :my_instance_method
56
+ end.new
57
+ assert_snapshot_unchanged(instance) do
58
+ test_result = run_as_test do
59
+ instance.stubs(:my_instance_method).returns(:new_return_value)
60
+ assert_equal :new_return_value, instance.send(:my_instance_method)
61
+ end
62
+ assert_passed(test_result)
63
+ end
64
+ assert_equal :original_return_value, instance.send(:my_instance_method)
65
+ end
66
+ end
@@ -0,0 +1,75 @@
1
+ require File.expand_path('../acceptance_test_helper', __FILE__)
2
+ require 'mocha'
3
+
4
+ class StubInstanceMethodDefinedOnKernelModuleTest < Test::Unit::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_and_leave_it_unchanged_after_test
17
+ Kernel.module_eval do
18
+ def my_instance_method
19
+ :original_return_value
20
+ end
21
+ public :my_instance_method
22
+ end
23
+ instance = Class.new.new
24
+ assert_snapshot_unchanged(instance) do
25
+ test_result = run_as_test do
26
+ instance.stubs(:my_instance_method).returns(:new_return_value)
27
+ assert_equal :new_return_value, instance.my_instance_method
28
+ end
29
+ assert_passed(test_result)
30
+ end
31
+ assert_equal :original_return_value, instance.my_instance_method
32
+ ensure
33
+ Kernel.module_eval { remove_method :my_instance_method }
34
+ end
35
+
36
+ def test_should_stub_protected_method_and_leave_it_unchanged_after_test
37
+ Kernel.module_eval do
38
+ def my_instance_method
39
+ :original_return_value
40
+ end
41
+ protected :my_instance_method
42
+ end
43
+ instance = Class.new.new
44
+ assert_snapshot_unchanged(instance) do
45
+ test_result = run_as_test do
46
+ instance.stubs(:my_instance_method).returns(:new_return_value)
47
+ assert_equal :new_return_value, instance.send(:my_instance_method)
48
+ end
49
+ assert_passed(test_result)
50
+ end
51
+ assert_equal :original_return_value, instance.send(:my_instance_method)
52
+ ensure
53
+ Kernel.module_eval { remove_method :my_instance_method }
54
+ end
55
+
56
+ def test_should_stub_private_method_and_leave_it_unchanged_after_test
57
+ Kernel.module_eval do
58
+ def my_instance_method
59
+ :original_return_value
60
+ end
61
+ private :my_instance_method
62
+ end
63
+ instance = Class.new.new
64
+ assert_snapshot_unchanged(instance) do
65
+ test_result = run_as_test do
66
+ instance.stubs(:my_instance_method).returns(:new_return_value)
67
+ assert_equal :new_return_value, instance.send(:my_instance_method)
68
+ end
69
+ assert_passed(test_result)
70
+ end
71
+ assert_equal :original_return_value, instance.send(:my_instance_method)
72
+ ensure
73
+ Kernel.module_eval { remove_method :my_instance_method }
74
+ end
75
+ end
@@ -0,0 +1,75 @@
1
+ require File.expand_path('../acceptance_test_helper', __FILE__)
2
+ require 'mocha'
3
+
4
+ class StubInstanceMethodDefinedOnModuleTest < Test::Unit::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_and_leave_it_unchanged_after_test
17
+ mod = Module.new do
18
+ def my_module_method
19
+ :original_return_value
20
+ end
21
+ public :my_module_method
22
+ end
23
+ instance = Class.new do
24
+ include mod
25
+ end.new
26
+ assert_snapshot_unchanged(instance) do
27
+ test_result = run_as_test do
28
+ instance.stubs(:my_module_method).returns(:new_return_value)
29
+ assert_equal :new_return_value, instance.my_module_method
30
+ end
31
+ assert_passed(test_result)
32
+ end
33
+ assert_equal :original_return_value, instance.my_module_method
34
+ end
35
+
36
+ def test_should_stub_protected_method_and_leave_it_unchanged_after_test
37
+ mod = Module.new do
38
+ def my_module_method
39
+ :original_return_value
40
+ end
41
+ protected :my_module_method
42
+ end
43
+ instance = Class.new do
44
+ include mod
45
+ end.new
46
+ assert_snapshot_unchanged(instance) do
47
+ test_result = run_as_test do
48
+ instance.stubs(:my_module_method).returns(:new_return_value)
49
+ assert_equal :new_return_value, instance.send(:my_module_method)
50
+ end
51
+ assert_passed(test_result)
52
+ end
53
+ assert_equal :original_return_value, instance.send(:my_module_method)
54
+ end
55
+
56
+ def test_should_stub_private_method_and_leave_it_unchanged_after_test
57
+ mod = Module.new do
58
+ def my_module_method
59
+ :original_return_value
60
+ end
61
+ private :my_module_method
62
+ end
63
+ instance = Class.new do
64
+ include mod
65
+ end.new
66
+ assert_snapshot_unchanged(instance) do
67
+ test_result = run_as_test do
68
+ instance.stubs(:my_module_method).returns(:new_return_value)
69
+ assert_equal :new_return_value, instance.send(:my_module_method)
70
+ end
71
+ assert_passed(test_result)
72
+ end
73
+ assert_equal :original_return_value, instance.send(:my_module_method)
74
+ end
75
+ end