rr 1.1.2 → 3.0.2

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 (157) hide show
  1. checksums.yaml +5 -5
  2. data/Appraisals +3 -43
  3. data/CHANGES.md +93 -0
  4. data/CREDITS.md +5 -0
  5. data/Gemfile +1 -17
  6. data/README.md +29 -32
  7. data/Rakefile +42 -40
  8. data/doc/02_syntax_comparison.md +1 -0
  9. data/lib/rr/class_instance_method_defined.rb +1 -1
  10. data/lib/rr/core_ext/array.rb +2 -0
  11. data/lib/rr/core_ext/hash.rb +2 -0
  12. data/lib/rr/deprecations.rb +97 -0
  13. data/lib/rr/double.rb +28 -10
  14. data/lib/rr/double_definitions/double_definition.rb +39 -16
  15. data/lib/rr/double_definitions/double_definition_create.rb +5 -5
  16. data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +10 -4
  17. data/lib/rr/double_definitions/double_injections/any_instance_of.rb +1 -1
  18. data/lib/rr/double_definitions/double_injections/instance.rb +2 -2
  19. data/lib/rr/double_definitions/strategies/strategy.rb +27 -8
  20. data/lib/rr/double_definitions/strategies/verification/mock.rb +8 -2
  21. data/lib/rr/double_matches.rb +4 -3
  22. data/lib/rr/dsl.rb +152 -0
  23. data/lib/rr/expectations/any_argument_expectation.rb +4 -4
  24. data/lib/rr/expectations/argument_equality_expectation.rb +43 -5
  25. data/lib/rr/injections/double_injection.rb +85 -26
  26. data/lib/rr/injections/method_missing_injection.rb +37 -6
  27. data/lib/rr/integrations/minitest_4.rb +1 -1
  28. data/lib/rr/integrations/minitest_4_active_support.rb +1 -1
  29. data/lib/rr/integrations/rspec/invocation_matcher.rb +0 -8
  30. data/lib/rr/integrations/rspec_2.rb +20 -2
  31. data/lib/rr/keyword_arguments.rb +15 -0
  32. data/lib/rr/method_dispatches/base_method_dispatch.rb +22 -5
  33. data/lib/rr/method_dispatches/method_dispatch.rb +21 -10
  34. data/lib/rr/method_dispatches/method_missing_dispatch.rb +14 -5
  35. data/lib/rr/recorded_call.rb +35 -0
  36. data/lib/rr/recorded_calls.rb +23 -9
  37. data/lib/rr/space.rb +15 -5
  38. data/lib/rr/spy_verification.rb +13 -5
  39. data/lib/rr/version.rb +1 -1
  40. data/lib/rr/wildcard_matchers.rb +10 -10
  41. data/lib/rr/without_autohook.rb +7 -14
  42. data/rr.gemspec +8 -3
  43. data/spec/defines_spec_suite_tasks.rb +12 -0
  44. data/spec/global_helper.rb +5 -0
  45. data/spec/spec_suite_configuration.rb +1 -7
  46. data/spec/suites.yml +0 -14
  47. data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +133 -33
  48. data/spec/suites/rspec_2/functional/dont_allow_spec.rb +13 -8
  49. data/spec/suites/rspec_2/functional/mock_bang_spec.rb +20 -0
  50. data/spec/suites/rspec_2/functional/mock_instance_of_spec.rb +14 -0
  51. data/spec/suites/rspec_2/functional/mock_instance_of_strong_spec.rb +15 -0
  52. data/spec/suites/rspec_2/functional/mock_proxy_instance_of_spec.rb +15 -0
  53. data/spec/suites/rspec_2/functional/mock_proxy_spec.rb +14 -0
  54. data/spec/suites/rspec_2/functional/mock_spec.rb +8 -232
  55. data/spec/suites/rspec_2/functional/mock_strong_spec.rb +14 -0
  56. data/spec/suites/rspec_2/functional/received_spec.rb +16 -0
  57. data/spec/suites/rspec_2/functional/spy_spec.rb +89 -28
  58. data/spec/suites/rspec_2/functional/stub_bang_spec.rb +20 -0
  59. data/spec/suites/rspec_2/functional/stub_instance_of_spec.rb +15 -0
  60. data/spec/suites/rspec_2/functional/stub_instance_of_strong_spec.rb +15 -0
  61. data/spec/suites/rspec_2/functional/stub_proxy_instance_of_spec.rb +16 -0
  62. data/spec/suites/rspec_2/functional/stub_proxy_spec.rb +45 -0
  63. data/spec/suites/rspec_2/functional/stub_spec.rb +42 -161
  64. data/spec/suites/rspec_2/functional/stub_strong_spec.rb +15 -0
  65. data/spec/suites/rspec_2/helper.rb +2 -2
  66. data/spec/suites/rspec_2/support/mixins/double_definition_creator_helpers.rb +173 -0
  67. data/spec/suites/rspec_2/support/mixins/mock_definition_creator_helpers.rb +45 -0
  68. data/spec/suites/rspec_2/support/mixins/proxy_definition_creator_helpers.rb +33 -0
  69. data/spec/suites/rspec_2/support/mixins/stub_creator_helpers.rb +43 -0
  70. data/spec/suites/rspec_2/support/mixins/stub_definition_creator_helpers.rb +45 -0
  71. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_never_called_qualifier.rb +39 -0
  72. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_times_called_qualifier.rb +50 -0
  73. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_without_qualifiers.rb +131 -0
  74. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/dont_allow.rb +148 -0
  75. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of.rb +26 -0
  76. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of_strong.rb +28 -0
  77. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_proxy.rb +11 -0
  78. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_strong.rb +37 -0
  79. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mocking.rb +107 -0
  80. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of.rb +32 -0
  81. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of_strong.rb +39 -0
  82. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_proxy.rb +11 -0
  83. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_strong.rb +37 -0
  84. data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stubbing.rb +57 -0
  85. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/array_flatten_bug.rb +35 -0
  86. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/block_form.rb +31 -0
  87. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/comparing_arity.rb +63 -0
  88. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/object_is_proxy.rb +43 -0
  89. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/sequential_invocations.rb +26 -0
  90. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/setting_implementation.rb +51 -0
  91. data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/yields.rb +81 -0
  92. data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +0 -28
  93. data/spec/suites/rspec_2/unit/deprecations_spec.rb +27 -0
  94. data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +18 -18
  95. data/spec/suites/rspec_2/unit/dsl/double_creators_spec.rb +133 -0
  96. data/spec/suites/rspec_2/unit/dsl/space_spec.rb +99 -0
  97. data/spec/suites/rspec_2/unit/dsl/wildcard_matchers_spec.rb +67 -0
  98. data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +9 -9
  99. data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +21 -21
  100. data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +4 -4
  101. data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +31 -21
  102. data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +0 -12
  103. data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +4 -19
  104. data/spec/suites/rspec_2/unit/space_spec.rb +7 -4
  105. data/spec/suites/rspec_2/unit/spy_verification_spec.rb +1 -1
  106. data/spec/support/adapter.rb +1 -1
  107. data/spec/support/adapter_tests/rspec.rb +19 -15
  108. data/spec/support/project/generator.rb +0 -4
  109. metadata +112 -57
  110. data/gemfiles/ruby_18_rspec_1.gemfile +0 -14
  111. data/gemfiles/ruby_18_rspec_1.gemfile.lock +0 -38
  112. data/gemfiles/ruby_18_rspec_1_rails_2.gemfile +0 -18
  113. data/gemfiles/ruby_18_rspec_1_rails_2.gemfile.lock +0 -64
  114. data/gemfiles/ruby_19_rspec_2_rails_3.gemfile +0 -15
  115. data/gemfiles/ruby_19_rspec_2_rails_3.gemfile.lock +0 -123
  116. data/lib/rr/adapters.rb +0 -34
  117. data/lib/rr/adapters/rr_methods.rb +0 -142
  118. data/lib/rr/integrations/rspec_1.rb +0 -46
  119. data/lib/rr/integrations/test_unit_1.rb +0 -63
  120. data/lib/rr/integrations/test_unit_2.rb +0 -17
  121. data/lib/rr/integrations/test_unit_200.rb +0 -27
  122. data/lib/rr/integrations/test_unit_200_active_support.rb +0 -25
  123. data/lib/rr/integrations/test_unit_2_active_support.rb +0 -38
  124. data/lib/rr/proc_from_block.rb +0 -11
  125. data/spec/suites/rspec_1/helper.rb +0 -24
  126. data/spec/suites/rspec_1/integration/rspec_1_spec.rb +0 -93
  127. data/spec/suites/rspec_1/integration/test_unit_1_spec.rb +0 -102
  128. data/spec/suites/rspec_1/integration/test_unit_2_spec.rb +0 -109
  129. data/spec/suites/rspec_1/spec_helper.rb +0 -3
  130. data/spec/suites/rspec_1_rails_2/integration/astc_rails_2_spec.rb +0 -141
  131. data/spec/suites/rspec_1_rails_2/integration/rspec_1_rails_2_spec.rb +0 -132
  132. data/spec/suites/rspec_1_rails_2/integration/test_unit_1_rails_2_spec.rb +0 -141
  133. data/spec/suites/rspec_1_rails_2/integration/test_unit_2_rails_2_spec.rb +0 -148
  134. data/spec/suites/rspec_1_rails_2/spec_helper.rb +0 -3
  135. data/spec/suites/rspec_2/functional/dsl_spec.rb +0 -13
  136. data/spec/suites/rspec_2/functional/instance_of_spec.rb +0 -14
  137. data/spec/suites/rspec_2/functional/proxy_spec.rb +0 -136
  138. data/spec/suites/rspec_2/functional/strong_spec.rb +0 -79
  139. data/spec/suites/rspec_2/integration/rspec_2_spec.rb +0 -133
  140. data/spec/suites/rspec_2/integration/test_unit_200_spec.rb +0 -102
  141. data/spec/suites/rspec_2/integration/test_unit_2_spec.rb +0 -109
  142. data/spec/suites/rspec_2/unit/adapters/rr_methods/double_creators_spec.rb +0 -135
  143. data/spec/suites/rspec_2/unit/adapters/rr_methods/space_spec.rb +0 -101
  144. data/spec/suites/rspec_2/unit/adapters/rr_methods/wildcard_matchers_spec.rb +0 -69
  145. data/spec/suites/rspec_2/unit/proc_from_block_spec.rb +0 -14
  146. data/spec/suites/rspec_2_rails_3/integration/astc_rails_3_spec.rb +0 -141
  147. data/spec/suites/rspec_2_rails_3/integration/minitest_4_rails_3_spec.rb +0 -148
  148. data/spec/suites/rspec_2_rails_3/integration/rspec_2_rails_3_spec.rb +0 -172
  149. data/spec/suites/rspec_2_rails_3/integration/test_unit_200_rails_3_spec.rb +0 -141
  150. data/spec/suites/rspec_2_rails_3/integration/test_unit_2_rails_3_spec.rb +0 -148
  151. data/spec/suites/rspec_2_rails_3/spec_helper.rb +0 -3
  152. data/spec/suites/rspec_2_rails_4/integration/astc_rails_4_spec.rb +0 -142
  153. data/spec/suites/rspec_2_rails_4/integration/minitest_4_rails_4_spec.rb +0 -149
  154. data/spec/suites/rspec_2_rails_4/integration/rspec_2_rails_4_spec.rb +0 -173
  155. data/spec/suites/rspec_2_rails_4/integration/test_unit_200_rails_4_spec.rb +0 -142
  156. data/spec/suites/rspec_2_rails_4/integration/test_unit_2_rails_4_spec.rb +0 -149
  157. data/spec/suites/rspec_2_rails_4/spec_helper.rb +0 -3
@@ -1,109 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe 'Integration with Test::Unit >= 2.5' do
4
- include IntegrationTests::RubyTestUnit
5
-
6
- def configure_project_generator(project_generator)
7
- super
8
- project_generator.configure do |project|
9
- project.test_unit_gem_version = '>= 2.5'
10
- end
11
- end
12
-
13
- def self.including_the_adapter_manually_works
14
- specify "including the adapter manually works" do
15
- project = generate_project do |project|
16
- project.add_to_prelude <<-EOT
17
- class Test::Unit::TestCase
18
- include RR::Adapters::TestUnit
19
- end
20
- EOT
21
- end
22
- project.add_test_file do |file|
23
- file.add_working_test_case_with_adapter_tests do |test_case|
24
- test_case.add_to_body <<-EOT
25
- def test_the_correct_adapters_are_loaded
26
- assert_adapters_loaded #{adapters_that_should_be_loaded.inspect}
27
- end
28
- EOT
29
- end
30
- end
31
- result = project.run_tests
32
- result.should be_success
33
- result.should_not have_errors_or_failures
34
- end
35
- end
36
-
37
- def self.rr_hooks_into_the_test_framework_automatically
38
- specify "RR hooks into the test framework automatically" do
39
- project = generate_project
40
- project.add_test_file do |file|
41
- file.add_working_test_case
42
- end
43
- result = project.run_tests
44
- result.should be_success
45
- result.should_not have_errors_or_failures
46
- end
47
- end
48
-
49
- context 'when Bundler is autorequiring RR' do
50
- def configure_project_generator(project_generator)
51
- super
52
- project_generator.configure do |project|
53
- project.autorequire_gems = true
54
- end
55
- end
56
-
57
- def adapters_that_should_be_loaded
58
- [:TestUnit2]
59
- end
60
-
61
- including_the_adapter_manually_works
62
- end
63
-
64
- context 'when RR is being required manually' do
65
- def configure_project_generator(project_generator)
66
- super
67
- project_generator.configure do |project|
68
- project.autorequire_gems = false
69
- end
70
- end
71
-
72
- def adapters_that_should_be_loaded
73
- [:TestUnit2]
74
- end
75
-
76
- rr_hooks_into_the_test_framework_automatically
77
- including_the_adapter_manually_works
78
-
79
- specify "when RR raises an error it raises a failure not an exception" do
80
- project = generate_project
81
- project.add_test_file do |file|
82
- file.add_test_case do |test_case|
83
- test_case.add_test <<-EOT
84
- object = Object.new
85
- mock(object).foo
86
- EOT
87
- end
88
- end
89
- result = project.run_tests
90
- result.should fail_with_output(/1 failure/)
91
- end
92
-
93
- specify "throwing an error in teardown doesn't mess things up" do
94
- project = generate_project
95
- project.add_test_file do |file|
96
- file.add_test_case do |test_case|
97
- test_case.add_to_body <<-EOT
98
- def teardown
99
- raise 'hell'
100
- end
101
- EOT
102
- test_case.add_test("") # doesn't matter
103
- end
104
- end
105
- result = project.run_tests
106
- result.should fail_with_output(/1 error/)
107
- end
108
- end
109
- end
@@ -1,135 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../../spec_helper")
2
-
3
- module RR
4
- module Adapters
5
- describe RRMethods do
6
- subject { Object.new }
7
-
8
- after(:each) do
9
- RR.reset
10
- end
11
-
12
- describe "normal strategy definitions" do
13
- attr_reader :strategy_method_name
14
-
15
- def call_strategy(*args, &block)
16
- __send__(strategy_method_name, *args, &block)
17
- end
18
-
19
- describe "#mock" do
20
- before do
21
- @strategy_method_name = :mock
22
- end
23
-
24
- context "when passing no args" do
25
- it "returns a DoubleDefinitionCreate" do
26
- expect(call_strategy.class).to eq RR::DoubleDefinitions::DoubleDefinitionCreate
27
- end
28
- end
29
-
30
- context "when passed a method_name argument" do
31
- it "creates a mock Double for method" do
32
- double_definition = mock(subject, :foobar).returns {:baz}
33
- expect(double_definition.times_matcher).to eq RR::TimesCalledMatchers::IntegerMatcher.new(1)
34
- expect(double_definition.argument_expectation.class).to eq RR::Expectations::ArgumentEqualityExpectation
35
- expect(double_definition.argument_expectation.expected_arguments).to eq []
36
- expect(subject.foobar).to eq :baz
37
- end
38
- end
39
- end
40
-
41
- describe "#stub" do
42
- before do
43
- @strategy_method_name = :stub
44
- end
45
-
46
- context "when passing no args" do
47
- it "returns a DoubleDefinitionCreate" do
48
- expect(call_strategy.class).to eq RR::DoubleDefinitions::DoubleDefinitionCreate
49
- end
50
- end
51
-
52
- context "when passed a method_name argument" do
53
- it "creates a stub Double for method when passed a method_name argument" do
54
- double_definition = stub(subject, :foobar).returns {:baz}
55
- expect(double_definition.times_matcher).to eq RR::TimesCalledMatchers::AnyTimesMatcher.new
56
- expect(double_definition.argument_expectation.class).to eq RR::Expectations::AnyArgumentExpectation
57
- expect(subject.foobar).to eq :baz
58
- end
59
- end
60
- end
61
-
62
- describe "#dont_allow" do
63
- before do
64
- @strategy_method_name = :dont_allow
65
- end
66
-
67
- context "when passing no args" do
68
- it "returns a DoubleDefinitionCreate" do
69
- expect(call_strategy.class).to eq RR::DoubleDefinitions::DoubleDefinitionCreate
70
- end
71
- end
72
-
73
- context "when passed a method_name argument_expectation" do
74
- it "creates a mock Double for method" do
75
- double_definition = dont_allow(subject, :foobar)
76
- expect(double_definition.times_matcher).to eq RR::TimesCalledMatchers::NeverMatcher.new
77
- expect(double_definition.argument_expectation.class).to eq RR::Expectations::AnyArgumentExpectation
78
-
79
- expect {
80
- subject.foobar
81
- }.to raise_error(RR::Errors::TimesCalledError)
82
- RR.reset
83
- end
84
- end
85
- end
86
- end
87
-
88
- describe "! strategy definitions" do
89
- attr_reader :strategy_method_name
90
- def call_strategy(*args, &definition_eval_block)
91
- __send__(strategy_method_name, *args, &definition_eval_block)
92
- end
93
-
94
- describe "#mock!" do
95
- before do
96
- @strategy_method_name = :mock!
97
- end
98
-
99
- context "when passed a method_name argument" do
100
- it "sets #verification_strategy to Mock" do
101
- proxy = mock!(:foobar)
102
- expect(proxy.double_definition_create.verification_strategy.class).to eq RR::DoubleDefinitions::Strategies::Verification::Mock
103
- end
104
- end
105
- end
106
-
107
- describe "#stub!" do
108
- before do
109
- @strategy_method_name = :stub!
110
- end
111
-
112
- context "when passed a method_name argument" do
113
- it "sets #verification_strategy to Stub" do
114
- proxy = stub!(:foobar)
115
- expect(proxy.double_definition_create.verification_strategy.class).to eq RR::DoubleDefinitions::Strategies::Verification::Stub
116
- end
117
- end
118
- end
119
-
120
- describe "#dont_allow!" do
121
- before do
122
- @strategy_method_name = :dont_allow!
123
- end
124
-
125
- context "when passed a method_name argument" do
126
- it "sets #verification_strategy to DontAllow" do
127
- proxy = dont_allow!(:foobar)
128
- expect(proxy.double_definition_create.verification_strategy.class).to eq RR::DoubleDefinitions::Strategies::Verification::DontAllow
129
- end
130
- end
131
- end
132
- end
133
- end
134
- end
135
- end
@@ -1,101 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../../spec_helper")
2
-
3
- module RR
4
- module Adapters
5
- describe RRMethods do
6
- attr_reader :space, :subject_1, :subject_2, :method_name
7
-
8
- include_examples "Swapped Space"
9
-
10
- include RR::Adapters::RRMethods
11
-
12
- before do
13
- @subject_1 = Object.new
14
- @subject_2 = Object.new
15
- @method_name = :foobar
16
- end
17
-
18
- describe "#verify" do
19
- it "aliases #rr_verify" do
20
- expect(RRMethods.instance_method("verify")).to eq RRMethods.instance_method("rr_verify")
21
- end
22
- end
23
-
24
- describe "#rr_verify" do
25
- it "verifies and deletes the double_injections" do
26
- double_1 = ::RR::Injections::DoubleInjection.find_or_create_by_subject(subject_1, method_name)
27
- double_1_verify_calls = 0
28
- double_1_reset_calls = 0
29
- (
30
- class << double_1;
31
- self;
32
- end).class_eval do
33
- define_method(:verify) do ||
34
- double_1_verify_calls += 1
35
- end
36
- define_method(:reset) do ||
37
- double_1_reset_calls += 1
38
- end
39
- end
40
- double_2 = ::RR::Injections::DoubleInjection.find_or_create_by_subject(subject_2, method_name)
41
- double_2_verify_calls = 0
42
- double_2_reset_calls = 0
43
- ( class << double_2; self; end).class_eval do
44
- define_method(:verify) do ||
45
- double_2_verify_calls += 1
46
- end
47
- define_method(:reset) do ||
48
- double_2_reset_calls += 1
49
- end
50
- end
51
-
52
- rr_verify
53
- expect(double_1_verify_calls).to eq 1
54
- expect(double_2_verify_calls).to eq 1
55
- expect(double_1_reset_calls).to eq 1
56
- expect(double_1_reset_calls).to eq 1
57
- end
58
- end
59
-
60
- describe "#reset" do
61
- it "aliases #rr_reset" do
62
- expect(RRMethods.instance_method("reset")).to eq RRMethods.instance_method("rr_reset")
63
- end
64
- end
65
-
66
- describe "#rr_reset" do
67
- it "removes the ordered doubles" do
68
- mock(subject_1).foobar1.ordered
69
- mock(subject_2).foobar2.ordered
70
-
71
- ::RR::Injections::DoubleInjection.instances.should_not be_empty
72
-
73
- rr_reset
74
- ::RR::Injections::DoubleInjection.instances
75
- expect(::RR::Injections::DoubleInjection.instances).to be_empty
76
- end
77
-
78
- it "resets all double_injections" do
79
- double_1 = ::RR::Injections::DoubleInjection.find_or_create_by_subject(subject_1, method_name)
80
- double_1_reset_calls = 0
81
- ( class << double_1; self; end).class_eval do
82
- define_method(:reset) do ||
83
- double_1_reset_calls += 1
84
- end
85
- end
86
- double_2 = ::RR::Injections::DoubleInjection.find_or_create_by_subject(subject_2, method_name)
87
- double_2_reset_calls = 0
88
- ( class << double_2; self; end).class_eval do
89
- define_method(:reset) do ||
90
- double_2_reset_calls += 1
91
- end
92
- end
93
-
94
- rr_reset
95
- expect(double_1_reset_calls).to eq 1
96
- expect(double_2_reset_calls).to eq 1
97
- end
98
- end
99
- end
100
- end
101
- end
@@ -1,69 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../../spec_helper")
2
-
3
- module RR
4
- module Adapters
5
- describe RRMethods do
6
- include RR::Adapters::RRMethods
7
-
8
- describe "#anything" do
9
- it "returns an Anything matcher" do
10
- expect(anything).to eq RR::WildcardMatchers::Anything.new
11
- end
12
-
13
- it "rr_anything returns an Anything matcher" do
14
- expect(rr_anything).to eq RR::WildcardMatchers::Anything.new
15
- end
16
- end
17
-
18
- describe "#is_a" do
19
- it "returns an IsA matcher" do
20
- expect(is_a(Integer)).to eq RR::WildcardMatchers::IsA.new(Integer)
21
- end
22
-
23
- it "rr_is_a returns an IsA matcher" do
24
- expect(rr_is_a(Integer)).to eq RR::WildcardMatchers::IsA.new(Integer)
25
- end
26
- end
27
-
28
- describe "#numeric" do
29
- it "returns an Numeric matcher" do
30
- expect(numeric).to eq RR::WildcardMatchers::Numeric.new
31
- end
32
-
33
- it "rr_numeric returns an Numeric matcher" do
34
- expect(rr_numeric).to eq RR::WildcardMatchers::Numeric.new
35
- end
36
- end
37
-
38
- describe "#boolean" do
39
- it "returns an Boolean matcher" do
40
- expect(boolean).to eq RR::WildcardMatchers::Boolean.new
41
- end
42
-
43
- it "rr_boolean returns an Boolean matcher" do
44
- expect(rr_boolean).to eq RR::WildcardMatchers::Boolean.new
45
- end
46
- end
47
-
48
- describe "#duck_type" do
49
- it "returns a DuckType matcher" do
50
- expect(duck_type(:one, :two)).to eq RR::WildcardMatchers::DuckType.new(:one, :two)
51
- end
52
-
53
- it "rr_duck_type returns a DuckType matcher" do
54
- expect(rr_duck_type(:one, :two)).to eq RR::WildcardMatchers::DuckType.new(:one, :two)
55
- end
56
- end
57
- end
58
-
59
- describe "#any_times" do
60
- it "returns an AnyTimesMatcher" do
61
- expect(any_times).to eq RR::TimesCalledMatchers::AnyTimesMatcher.new
62
- end
63
-
64
- it "rr_any_times returns an AnyTimesMatcher" do
65
- expect(rr_any_times).to eq RR::TimesCalledMatchers::AnyTimesMatcher.new
66
- end
67
- end
68
- end
69
- end
@@ -1,14 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
2
-
3
- module RR
4
- describe ProcFromBlock do
5
- describe "#==" do
6
- it "acts the same as #== on a Proc" do
7
- original_proc = lambda {}
8
- expect(Proc.new(&original_proc)).to eq original_proc
9
-
10
- expect(ProcFromBlock.new(&original_proc)).to eq original_proc
11
- end
12
- end
13
- end
14
- end
@@ -1,141 +0,0 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe 'Integration with straight ActiveSupport::TestCase and Rails 3' do
4
- include IntegrationTests::RailsTestUnitLike
5
-
6
- def configure_rails_project_generator(project_generator)
7
- super
8
- project_generator.configure do |project|
9
- project.rails_version = 3
10
- end
11
- end
12
-
13
- def self.including_the_adapter_manually_works
14
- specify "including the adapter manually works" do
15
- project = generate_project do |project|
16
- project.add_to_prelude <<-EOT
17
- class ActiveSupport::TestCase
18
- include RR::Adapters::TestUnit
19
- end
20
- EOT
21
- end
22
- project.add_test_file do |file|
23
- file.add_working_test_case_with_adapter_tests do |test_case|
24
- test_case.add_to_body <<-EOT
25
- def test_the_correct_adapters_are_loaded
26
- assert_adapters_loaded #{adapters_that_should_be_loaded.inspect}
27
- end
28
- EOT
29
- end
30
- end
31
- result = project.run_tests
32
- result.should be_success
33
- result.should_not have_errors_or_failures
34
- end
35
- end
36
-
37
- def self.rr_hooks_into_the_test_framework_automatically
38
- specify "RR hooks into the test framework automatically" do
39
- project = generate_project
40
- project.add_test_file do |file|
41
- file.add_working_test_case
42
- end
43
- result = project.run_tests
44
- result.should be_success
45
- result.should_not have_errors_or_failures
46
- end
47
- end
48
-
49
- def self.using_rr_with_cucumber_works
50
- specify "using RR with Cucumber works" do
51
- project_generator = build_rails_project_generator do |project_generator|
52
- project_generator.mixin Project::Cucumber
53
- end
54
- project = project_generator.call
55
- result = project.run_command_within("bundle exec cucumber")
56
- result.should be_success
57
- end
58
- end
59
-
60
- context 'when Bundler is autorequiring RR' do
61
- def configure_project_generator(project_generator)
62
- super
63
- project_generator.configure do |project|
64
- project.autorequire_gems = true
65
- end
66
- end
67
-
68
- def adapters_that_should_be_loaded
69
- [:TestUnit200]
70
- end
71
-
72
- including_the_adapter_manually_works
73
- using_rr_with_cucumber_works
74
- end
75
-
76
- context 'when RR is being required manually' do
77
- def configure_project_generator(project_generator)
78
- super
79
- project_generator.configure do |project|
80
- project.autorequire_gems = false
81
- end
82
- end
83
-
84
- def adapters_that_should_be_loaded
85
- [:TestUnit200, :TestUnit200ActiveSupport]
86
- end
87
-
88
- rr_hooks_into_the_test_framework_automatically
89
- including_the_adapter_manually_works
90
- using_rr_with_cucumber_works
91
-
92
- specify "when RR raises an error it raises a failure not an exception" do
93
- project = generate_project
94
- project.add_test_file do |file|
95
- file.add_test_case do |test_case|
96
- test_case.add_test <<-EOT
97
- object = Object.new
98
- mock(object).foo
99
- EOT
100
- end
101
- end
102
- result = project.run_tests
103
- result.should fail_with_output(/1 failure/)
104
- end
105
-
106
- specify "the database is properly rolled back after an RR error" do
107
- project = generate_project do |project|
108
- project.add_model_and_migration(:person, :people, :name => :string)
109
- end
110
- project.add_test_file do |file|
111
- file.add_test_case do |test_case|
112
- test_case.add_test <<-EOT
113
- Person.create!(:name => 'Joe Blow')
114
- object = Object.new
115
- mock(object).foo
116
- EOT
117
- end
118
- end
119
- expect {
120
- result = project.run_tests
121
- result.should have_errors_or_failures
122
- }.to leave_database_table_clear(project, :people)
123
- end
124
-
125
- specify "throwing an error in teardown doesn't mess things up" do
126
- project = generate_project
127
- project.add_test_file do |file|
128
- file.add_test_case do |test_case|
129
- test_case.add_to_body <<-EOT
130
- def teardown
131
- raise 'hell'
132
- end
133
- EOT
134
- test_case.add_test("") # doesn't matter
135
- end
136
- end
137
- result = project.run_tests
138
- result.should fail_with_output(/1 error/)
139
- end
140
- end
141
- end