mocha 0.9.12 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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