rr 1.1.1 → 1.1.2.rc1
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.
- checksums.yaml +4 -4
- data/Appraisals +46 -0
- data/CHANGES.md +21 -1
- data/Gemfile +19 -0
- data/README.md +91 -106
- data/Rakefile +55 -0
- data/gemfiles/ruby_18_rspec_1.gemfile +14 -0
- data/gemfiles/ruby_18_rspec_1.gemfile.lock +38 -0
- data/gemfiles/ruby_18_rspec_1_rails_2.gemfile +18 -0
- data/gemfiles/ruby_18_rspec_1_rails_2.gemfile.lock +64 -0
- data/gemfiles/ruby_19_rspec_2.gemfile +14 -0
- data/gemfiles/ruby_19_rspec_2.gemfile.lock +49 -0
- data/gemfiles/ruby_19_rspec_2_rails_3.gemfile +15 -0
- data/gemfiles/ruby_19_rspec_2_rails_3.gemfile.lock +123 -0
- data/gemfiles/ruby_19_rspec_2_rails_4.gemfile +15 -0
- data/gemfiles/ruby_19_rspec_2_rails_4.gemfile.lock +119 -0
- data/lib/rr/adapters.rb +4 -14
- data/lib/rr/integrations.rb +13 -12
- data/lib/rr/integrations/decorator.rb +4 -1
- data/lib/rr/integrations/rspec_2.rb +6 -1
- data/lib/rr/integrations/test_unit_1.rb +2 -2
- data/lib/rr/integrations/test_unit_2.rb +3 -1
- data/lib/rr/version.rb +1 -2
- data/lib/rr/without_autohook.rb +1 -1
- data/rr.gemspec +6 -2
- data/spec/custom_formatter_for_rspec.rb +18 -0
- data/spec/custom_formatter_for_rspec_2.rb +40 -0
- data/spec/defines_spec_suite_tasks.rb +45 -0
- data/spec/fixtures/rubygems_patch_for_187.rb +598 -0
- data/spec/global_helper.rb +33 -0
- data/spec/spec.opts +3 -0
- data/spec/spec_suite_configuration.rb +132 -0
- data/spec/spec_suite_runner.rb +47 -0
- data/spec/suites.yml +24 -0
- data/spec/suites/rspec_1/helper.rb +24 -0
- data/spec/suites/rspec_1/integration/rspec_1_spec.rb +93 -0
- data/spec/suites/rspec_1/integration/test_unit_1_spec.rb +102 -0
- data/spec/suites/rspec_1/integration/test_unit_2_spec.rb +109 -0
- data/spec/suites/rspec_1/spec_helper.rb +3 -0
- data/spec/suites/rspec_1_rails_2/integration/astc_rails_2_spec.rb +141 -0
- data/spec/suites/rspec_1_rails_2/integration/rspec_1_rails_2_spec.rb +132 -0
- data/spec/suites/rspec_1_rails_2/integration/test_unit_1_rails_2_spec.rb +141 -0
- data/spec/suites/rspec_1_rails_2/integration/test_unit_2_rails_2_spec.rb +148 -0
- data/spec/suites/rspec_1_rails_2/spec_helper.rb +3 -0
- data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +47 -0
- data/spec/suites/rspec_2/functional/dont_allow_spec.rb +12 -0
- data/spec/suites/rspec_2/functional/dsl_spec.rb +13 -0
- data/spec/suites/rspec_2/functional/instance_of_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/mock_spec.rb +241 -0
- data/spec/suites/rspec_2/functional/proxy_spec.rb +136 -0
- data/spec/suites/rspec_2/functional/spy_spec.rb +41 -0
- data/spec/suites/rspec_2/functional/strong_spec.rb +79 -0
- data/spec/suites/rspec_2/functional/stub_spec.rb +190 -0
- data/spec/suites/rspec_2/functional/wildcard_matchers_spec.rb +128 -0
- data/spec/suites/rspec_2/helper.rb +28 -0
- data/spec/suites/rspec_2/integration/minitest_4_spec.rb +109 -0
- data/spec/suites/rspec_2/integration/minitest_spec.rb +109 -0
- data/spec/suites/rspec_2/integration/rspec_2_spec.rb +133 -0
- data/spec/suites/rspec_2/integration/test_unit_200_spec.rb +102 -0
- data/spec/suites/rspec_2/integration/test_unit_2_spec.rb +109 -0
- data/spec/suites/rspec_2/spec_helper.rb +3 -0
- data/spec/suites/rspec_2/support/matchers/wildcard_matcher_matchers.rb +32 -0
- data/spec/suites/rspec_2/support/shared_examples/space.rb +13 -0
- data/spec/suites/rspec_2/support/shared_examples/times_called_expectation.rb +9 -0
- data/spec/suites/rspec_2/unit/adapters/rr_methods/double_creators_spec.rb +135 -0
- data/spec/suites/rspec_2/unit/adapters/rr_methods/space_spec.rb +101 -0
- data/spec/suites/rspec_2/unit/adapters/rr_methods/wildcard_matchers_spec.rb +69 -0
- data/spec/suites/rspec_2/unit/core_ext/array_spec.rb +39 -0
- data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +81 -0
- data/spec/suites/rspec_2/unit/core_ext/hash_spec.rb +55 -0
- data/spec/suites/rspec_2/unit/core_ext/range_spec.rb +41 -0
- data/spec/suites/rspec_2/unit/core_ext/regexp_spec.rb +41 -0
- data/spec/suites/rspec_2/unit/double_definitions/child_double_definition_create_spec.rb +114 -0
- data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_blank_slate_spec.rb +93 -0
- data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +446 -0
- data/spec/suites/rspec_2/unit/errors/rr_error_spec.rb +67 -0
- data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +48 -0
- data/spec/suites/rspec_2/unit/expectations/anything_argument_equality_expectation_spec.rb +14 -0
- data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +135 -0
- data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +30 -0
- data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +82 -0
- data/spec/suites/rspec_2/unit/expectations/satisfy_argument_equality_expectation_spec.rb +61 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/any_times_matcher_spec.rb +22 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_least_matcher_spec.rb +37 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/at_most_matcher_spec.rb +43 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/integer_matcher_spec.rb +58 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/proc_matcher_spec.rb +35 -0
- data/spec/suites/rspec_2/unit/expectations/times_called_expectation/range_matcher_spec.rb +39 -0
- data/spec/suites/rspec_2/unit/hash_with_object_id_key_spec.rb +88 -0
- data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +545 -0
- data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_verify_spec.rb +32 -0
- data/spec/suites/rspec_2/unit/integrations/rspec/invocation_matcher_spec.rb +297 -0
- data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +85 -0
- data/spec/suites/rspec_2/unit/proc_from_block_spec.rb +14 -0
- data/spec/suites/rspec_2/unit/rr_spec.rb +28 -0
- data/spec/suites/rspec_2/unit/space_spec.rb +595 -0
- data/spec/suites/rspec_2/unit/spy_verification_spec.rb +133 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/any_times_matcher_spec.rb +46 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/at_least_matcher_spec.rb +54 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/at_most_matcher_spec.rb +69 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/integer_matcher_spec.rb +69 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/proc_matcher_spec.rb +54 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/range_matcher_spec.rb +75 -0
- data/spec/suites/rspec_2/unit/times_called_matchers/times_called_matcher_spec.rb +117 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/anything_spec.rb +33 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/boolean_spec.rb +45 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/duck_type_spec.rb +64 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/hash_including_spec.rb +64 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/is_a_spec.rb +55 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/numeric_spec.rb +46 -0
- data/spec/suites/rspec_2/unit/wildcard_matchers/satisfy_spec.rb +57 -0
- data/spec/suites/rspec_2_rails_3/integration/astc_rails_3_spec.rb +141 -0
- data/spec/suites/rspec_2_rails_3/integration/minitest_4_rails_3_spec.rb +148 -0
- data/spec/suites/rspec_2_rails_3/integration/rspec_2_rails_3_spec.rb +172 -0
- data/spec/suites/rspec_2_rails_3/integration/test_unit_200_rails_3_spec.rb +141 -0
- data/spec/suites/rspec_2_rails_3/integration/test_unit_2_rails_3_spec.rb +148 -0
- data/spec/suites/rspec_2_rails_3/spec_helper.rb +3 -0
- data/spec/suites/rspec_2_rails_4/integration/astc_rails_4_spec.rb +142 -0
- data/spec/suites/rspec_2_rails_4/integration/minitest_4_rails_4_spec.rb +149 -0
- data/spec/suites/rspec_2_rails_4/integration/rspec_2_rails_4_spec.rb +173 -0
- data/spec/suites/rspec_2_rails_4/integration/test_unit_200_rails_4_spec.rb +142 -0
- data/spec/suites/rspec_2_rails_4/integration/test_unit_2_rails_4_spec.rb +149 -0
- data/spec/suites/rspec_2_rails_4/spec_helper.rb +3 -0
- data/spec/support/adapter.rb +22 -0
- data/spec/support/adapter_tests/base.rb +45 -0
- data/spec/support/adapter_tests/minitest.rb +7 -0
- data/spec/support/adapter_tests/rspec.rb +66 -0
- data/spec/support/adapter_tests/test_unit.rb +47 -0
- data/spec/support/command_runner.rb +105 -0
- data/spec/support/generator.rb +56 -0
- data/spec/support/integration_tests/base.rb +64 -0
- data/spec/support/integration_tests/rails.rb +60 -0
- data/spec/support/integration_tests/rails_minitest.rb +13 -0
- data/spec/support/integration_tests/rails_rspec.rb +13 -0
- data/spec/support/integration_tests/rails_test_unit.rb +13 -0
- data/spec/support/integration_tests/rails_test_unit_like.rb +13 -0
- data/spec/support/integration_tests/ruby.rb +7 -0
- data/spec/support/integration_tests/ruby_minitest.rb +13 -0
- data/spec/support/integration_tests/ruby_rspec.rb +13 -0
- data/spec/support/integration_tests/ruby_test_unit.rb +13 -0
- data/spec/support/matchers/be_a_subset_of_matcher.rb +24 -0
- data/spec/support/project/cucumber.rb +50 -0
- data/spec/support/project/generator.rb +352 -0
- data/spec/support/project/minitest.rb +39 -0
- data/spec/support/project/rails.rb +199 -0
- data/spec/support/project/rails_minitest.rb +17 -0
- data/spec/support/project/rails_rspec.rb +50 -0
- data/spec/support/project/rails_test_unit.rb +17 -0
- data/spec/support/project/rails_test_unit_like.rb +17 -0
- data/spec/support/project/rspec.rb +69 -0
- data/spec/support/project/ruby.rb +34 -0
- data/spec/support/project/ruby_minitest.rb +11 -0
- data/spec/support/project/ruby_rspec.rb +29 -0
- data/spec/support/project/ruby_test_unit.rb +11 -0
- data/spec/support/project/ruby_test_unit_like.rb +21 -0
- data/spec/support/project/test_unit.rb +29 -0
- data/spec/support/project/test_unit_like.rb +7 -0
- data/spec/support/project/tests_runner.rb +22 -0
- data/spec/support/test.sqlite3 +0 -0
- data/spec/support/test_case/generator.rb +53 -0
- data/spec/support/test_case/minitest.rb +13 -0
- data/spec/support/test_case/rspec.rb +19 -0
- data/spec/support/test_case/test_unit.rb +21 -0
- data/spec/support/test_file/generator.rb +120 -0
- data/spec/support/test_file/minitest.rb +19 -0
- data/spec/support/test_file/rails_minitest.rb +7 -0
- data/spec/support/test_file/rails_rspec.rb +12 -0
- data/spec/support/test_file/rails_test_unit.rb +25 -0
- data/spec/support/test_file/rspec.rb +33 -0
- data/spec/support/test_file/test_unit.rb +36 -0
- data/spec/support/test_helper/generator.rb +27 -0
- data/spec/support/test_helper/minitest.rb +7 -0
- data/spec/support/test_helper/rails.rb +31 -0
- data/spec/support/test_helper/rails_minitest.rb +7 -0
- data/spec/support/test_helper/rails_rspec.rb +25 -0
- data/spec/support/test_helper/rails_test_unit.rb +23 -0
- data/spec/support/test_helper/rspec.rb +7 -0
- data/spec/support/test_helper/ruby.rb +31 -0
- data/spec/support/test_helper/test_unit.rb +7 -0
- metadata +172 -6
- data/VERSION +0 -1
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Array do
|
4
|
+
include WildcardMatcherMatchers
|
5
|
+
|
6
|
+
describe '#wildcard_match?' do
|
7
|
+
context 'when this Array has items that respond to #wildcard_match?' do
|
8
|
+
subject { [hash_including({:foo => 'bar'})] }
|
9
|
+
|
10
|
+
it "returns true if all items in the given Array wildcard-match corresponding items in this Array" do
|
11
|
+
should wildcard_match([{:foo => 'bar', :baz => 'quux'}])
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns true if any items in the given Array do not wildcard-match corresponding items in this Array" do
|
15
|
+
should_not wildcard_match([{:foo => 'bat', :baz => 'quux'}])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when this Array has items that do not respond to #wildcard_match?' do
|
20
|
+
subject { [:a_symbol] }
|
21
|
+
|
22
|
+
it "returns true if all items in the given Array equal-match corresponding items in this Array" do
|
23
|
+
should wildcard_match([:a_symbol])
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns true if any items in the given Array do not equal-match corresponding items in this Array" do
|
27
|
+
should_not wildcard_match([:another_symbol])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when not given an Array' do
|
32
|
+
subject { [{:foo => 'bar'}] }
|
33
|
+
|
34
|
+
it "returns false" do
|
35
|
+
should_not wildcard_match(:something_else)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Enumerable do
|
4
|
+
include WildcardMatcherMatchers
|
5
|
+
|
6
|
+
let(:klass) {
|
7
|
+
Class.new do
|
8
|
+
include Enumerable
|
9
|
+
|
10
|
+
def initialize(*items)
|
11
|
+
@arr = items
|
12
|
+
end
|
13
|
+
|
14
|
+
def each(&block)
|
15
|
+
@arr.each(&block)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
}
|
19
|
+
|
20
|
+
describe '#wildcard_match?' do
|
21
|
+
context 'when this Enumerable has items that respond to #wildcard_match?' do
|
22
|
+
subject { klass.new(hash_including({:foo => 'bar'})) }
|
23
|
+
|
24
|
+
it "returns true if all items in the given Enumerable wildcard-match corresponding items in this Enumerable" do
|
25
|
+
should wildcard_match([{:foo => 'bar', :baz => 'quux'}])
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns true if any items in the given Enumerable do not wildcard-match corresponding items in this Enumerable" do
|
29
|
+
should_not wildcard_match([{:foo => 'bat', :baz => 'quux'}])
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when this Enumerable has items that do not respond to #wildcard_match?' do
|
34
|
+
subject { klass.new(:a_symbol) }
|
35
|
+
|
36
|
+
it "returns true if all items in the given Enumerable equal-match corresponding items in this Enumerable" do
|
37
|
+
should wildcard_match([:a_symbol])
|
38
|
+
end
|
39
|
+
|
40
|
+
it "returns true if any items in the given Enumerable do not equal-match corresponding items in this Enumerable" do
|
41
|
+
should_not wildcard_match([:another_symbol])
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
if RUBY_VERSION =~ /^1.8/
|
46
|
+
context 'when the Enumerable is a String' do
|
47
|
+
subject { 'foo' }
|
48
|
+
|
49
|
+
it "returns true if the String is exactly equal to the given String" do
|
50
|
+
should wildcard_match('foo')
|
51
|
+
end
|
52
|
+
|
53
|
+
it "returns false if the string is not exactly equal to the given String" do
|
54
|
+
should_not wildcard_match('bar')
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'whose #== method has been proxied' do
|
58
|
+
before do
|
59
|
+
@r1 = 'x'
|
60
|
+
@r2 = 'y'
|
61
|
+
mock.proxy(@r1) == @r1
|
62
|
+
mock.proxy(@r1) == @r2
|
63
|
+
end
|
64
|
+
|
65
|
+
it "doesn't blow up with a recursive loop error" do
|
66
|
+
@r1 == @r1
|
67
|
+
@r1 == @r2
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'when not given an Enumerable' do
|
74
|
+
subject { klass.new({:foo => 'bar'}) }
|
75
|
+
|
76
|
+
it "returns false" do
|
77
|
+
should_not wildcard_match(:something_else)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Hash do
|
4
|
+
include WildcardMatcherMatchers
|
5
|
+
|
6
|
+
describe '#wildcard_match?' do
|
7
|
+
context 'when this Hash has keys that respond to #wildcard_match?' do
|
8
|
+
subject { {is_a(Symbol) => 'x'} }
|
9
|
+
|
10
|
+
it "returns true if all keys in the given Hash wildcard-match the corresponding keys in this Hash" do
|
11
|
+
should wildcard_match({:foo => 'x'})
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns true if any keys in the given Hash do not wildcard-match the corresponding keys in this Hash" do
|
15
|
+
should_not wildcard_match({'foo' => 'x'})
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when this Hash has values that respond to #wildcard_match?' do
|
20
|
+
subject { {'x' => is_a(Symbol)} }
|
21
|
+
|
22
|
+
it "returns true if all values in the given Hash wildcard-match the corresponding values in this Hash" do
|
23
|
+
should wildcard_match({'x' => :foo})
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns false if any values in the given Hash do not wildcard-match the corresponding values in this Hash" do
|
27
|
+
should_not wildcard_match({'x' => 'foo'})
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when this Hash does not have keys or values that respond to #wildcard_match?' do
|
32
|
+
subject { {:x => :y} }
|
33
|
+
|
34
|
+
it "returns true if all pairs in the given Hash wildcard-match the corresponding values in this Hash" do
|
35
|
+
should wildcard_match({:x => :y})
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns false if any keys do not equal-match corresponding items in the subject" do
|
39
|
+
should_not wildcard_match({:z => :y})
|
40
|
+
end
|
41
|
+
|
42
|
+
it "returns false if any values do not equal-match corresponding items in the subject" do
|
43
|
+
should_not wildcard_match({:x => :z})
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'when not given a Hash' do
|
48
|
+
subject { {:foo => 'bar'} }
|
49
|
+
|
50
|
+
it "returns false" do
|
51
|
+
should_not wildcard_match(:something_else)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
|
2
|
+
|
3
|
+
describe Range do
|
4
|
+
include WildcardMatcherMatchers
|
5
|
+
|
6
|
+
describe '#wildcard_match?' do
|
7
|
+
subject { 1..5 }
|
8
|
+
|
9
|
+
it "returns true when given Range is exactly equal to this Range" do
|
10
|
+
should wildcard_match(1..5)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns true when given number falls within the range" do
|
14
|
+
should wildcard_match(3)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "returns false when given number falls outside the range" do
|
18
|
+
should_not wildcard_match(8)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#==' do
|
23
|
+
subject { 1..5 }
|
24
|
+
|
25
|
+
it "returns true when given Range is exactly equal to this Range" do
|
26
|
+
should equal_match(1..5)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns false when given Range is not exactly equal to this Range" do
|
30
|
+
should_not equal_match(3..5)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "returns false even when given an object that wildcard matches this Range" do
|
34
|
+
should_not equal_match(3)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "returns false when given object isn't even a Range" do
|
38
|
+
should_not equal_match(:something_else)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.expand_path('../../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Regexp do
|
4
|
+
include WildcardMatcherMatchers
|
5
|
+
|
6
|
+
describe '#wildcard_match?' do
|
7
|
+
subject { /foo/ }
|
8
|
+
|
9
|
+
it "returns true when given Regexp is exactly equal to this Regexp" do
|
10
|
+
should wildcard_match(/foo/)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns true if given string matches the regexp" do
|
14
|
+
should wildcard_match('foobarbaz')
|
15
|
+
end
|
16
|
+
|
17
|
+
it "returns false if given string does not match the regexp" do
|
18
|
+
should_not wildcard_match('aslkj')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#==' do
|
23
|
+
subject { /foo/ }
|
24
|
+
|
25
|
+
it "returns true when given Regexp is exactly equal to this Regexp" do
|
26
|
+
should equal_match(/foo/)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns false when given Regexp is not exactly equal to this Regexp" do
|
30
|
+
should_not equal_match(/alkj/)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "returns false even when given an object that wildcard matches this Regexp" do
|
34
|
+
should_not equal_match('foobarbaz')
|
35
|
+
end
|
36
|
+
|
37
|
+
it "returns false when not even given a Regexp" do
|
38
|
+
should_not equal_match(:something_else)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
|
2
|
+
|
3
|
+
module RR
|
4
|
+
module DoubleDefinitions
|
5
|
+
describe ChildDoubleDefinitionCreate do
|
6
|
+
attr_reader :parent_subject, :parent_double_definition_create, :parent_double_definition, :child_double_definition_create
|
7
|
+
|
8
|
+
include_examples "Swapped Space"
|
9
|
+
|
10
|
+
before(:each) do
|
11
|
+
@parent_subject = Object.new
|
12
|
+
@parent_double_definition_create = DoubleDefinitionCreate.new
|
13
|
+
@parent_double_definition = DoubleDefinition.new(parent_double_definition_create)
|
14
|
+
@child_double_definition_create = ChildDoubleDefinitionCreate.new(parent_double_definition)
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#root_subject" do
|
18
|
+
it "returns the #parent_double_definition.root_subject" do
|
19
|
+
child_subject = Object.new
|
20
|
+
parent_double_definition_create.stub(parent_subject)
|
21
|
+
child_double_definition_create.stub(child_subject)
|
22
|
+
expect(child_double_definition_create.root_subject).to eq parent_subject
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "Strategies::Verification definitions" do
|
27
|
+
describe "methods without !" do
|
28
|
+
attr_reader :child_subject
|
29
|
+
before do
|
30
|
+
@child_subject = Object.new
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#mock" do
|
34
|
+
context "when passed a subject" do
|
35
|
+
it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
|
36
|
+
expect(parent_double_definition.implementation).to be_nil
|
37
|
+
child_double_definition_create.mock(child_subject)
|
38
|
+
expect(parent_double_definition.implementation.call).to eq child_subject
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#stub" do
|
44
|
+
context "when passed a subject" do
|
45
|
+
it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
|
46
|
+
expect(parent_double_definition.implementation).to be_nil
|
47
|
+
child_double_definition_create.stub(child_subject)
|
48
|
+
expect(parent_double_definition.implementation.call).to eq child_subject
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#dont_allow" do
|
54
|
+
context "when passed a subject" do
|
55
|
+
it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
|
56
|
+
expect(parent_double_definition.implementation).to be_nil
|
57
|
+
child_double_definition_create.dont_allow(child_subject)
|
58
|
+
expect(parent_double_definition.implementation.call).to eq child_subject
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "methods with !" do
|
65
|
+
describe "#mock!" do
|
66
|
+
it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
|
67
|
+
expect(parent_double_definition.implementation).to be_nil
|
68
|
+
child_subject = child_double_definition_create.mock!.__double_definition_create__.subject
|
69
|
+
expect(parent_double_definition.implementation.call).to eq child_subject
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "#stub!" do
|
74
|
+
it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
|
75
|
+
expect(parent_double_definition.implementation).to be_nil
|
76
|
+
child_subject = child_double_definition_create.stub!.__double_definition_create__.subject
|
77
|
+
expect(parent_double_definition.implementation.call).to eq child_subject
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#dont_allow!" do
|
82
|
+
it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
|
83
|
+
expect(parent_double_definition.implementation).to be_nil
|
84
|
+
child_subject = child_double_definition_create.dont_allow!.__double_definition_create__.subject
|
85
|
+
expect(parent_double_definition.implementation.call).to eq child_subject
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "Strategies::DoubleInjection definitions" do
|
92
|
+
describe "methods without !" do
|
93
|
+
describe "#instance_of" do
|
94
|
+
it "raises a NoMethodError" do
|
95
|
+
expect {
|
96
|
+
child_double_definition_create.instance_of
|
97
|
+
}.to raise_error(NoMethodError)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "methods with !" do
|
103
|
+
describe "#instance_of!" do
|
104
|
+
it "raises a NoMethodError" do
|
105
|
+
expect {
|
106
|
+
child_double_definition_create.instance_of!
|
107
|
+
}.to raise_error(NoMethodError)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
|
2
|
+
|
3
|
+
module RR
|
4
|
+
module DoubleDefinitions
|
5
|
+
describe DoubleDefinitionCreateBlankSlate do
|
6
|
+
attr_reader :double_definition_create, :blank_slate
|
7
|
+
|
8
|
+
include_examples "Swapped Space"
|
9
|
+
|
10
|
+
subject { Object.new }
|
11
|
+
|
12
|
+
before(:each) do
|
13
|
+
@double_definition_create = DoubleDefinitionCreate.new
|
14
|
+
double_definition_create.mock(subject)
|
15
|
+
end
|
16
|
+
|
17
|
+
describe ".new" do
|
18
|
+
it "does not undefine object_id" do
|
19
|
+
blank_slate = DoubleDefinitionCreateBlankSlate.new(double_definition_create)
|
20
|
+
expect(blank_slate.object_id.class).to eq Fixnum
|
21
|
+
end
|
22
|
+
|
23
|
+
context "without block" do
|
24
|
+
before do
|
25
|
+
@blank_slate = DoubleDefinitionCreateBlankSlate.new(double_definition_create)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "clears out all methods from proxy" do
|
29
|
+
expect(stub(subject).i_should_be_a_double).to be_instance_of(DoubleDefinition)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "when passed a block" do
|
34
|
+
context "when the block has an arity of 1" do
|
35
|
+
attr_reader :passed_in_argument
|
36
|
+
before do
|
37
|
+
passed_in_argument = nil
|
38
|
+
stub(subject) do |b|
|
39
|
+
passed_in_argument = b
|
40
|
+
b.foobar(1, 2) {:one_two}
|
41
|
+
b.foobar(1) {:one}
|
42
|
+
b.foobar.with_any_args {:default}
|
43
|
+
b.baz() {:baz_result}
|
44
|
+
end
|
45
|
+
@passed_in_argument = passed_in_argument
|
46
|
+
end
|
47
|
+
|
48
|
+
it "creates double_injections" do
|
49
|
+
expect(subject.foobar(1, 2)).to eq :one_two
|
50
|
+
expect(subject.foobar(1)).to eq :one
|
51
|
+
expect(subject.foobar(:something)).to eq :default
|
52
|
+
expect(subject.baz).to eq :baz_result
|
53
|
+
end
|
54
|
+
|
55
|
+
it "passes the self into the block" do
|
56
|
+
expect(passed_in_argument.__double_definition_create__).to be_instance_of(
|
57
|
+
::RR::DoubleDefinitions::DoubleDefinitionCreate
|
58
|
+
)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context "when the block has an arity of 0" do
|
63
|
+
attr_reader :self_value
|
64
|
+
before do
|
65
|
+
self_value = nil
|
66
|
+
stub(subject) do ||
|
67
|
+
self_value = self
|
68
|
+
foobar(1, 2) {:one_two}
|
69
|
+
foobar(1) {:one}
|
70
|
+
foobar.with_any_args {:default}
|
71
|
+
baz() {:baz_result}
|
72
|
+
end
|
73
|
+
@self_value = self_value
|
74
|
+
end
|
75
|
+
|
76
|
+
it "creates double_injections" do
|
77
|
+
expect(subject.foobar(1, 2)).to eq :one_two
|
78
|
+
expect(subject.foobar(1)).to eq :one
|
79
|
+
expect(subject.foobar(:something)).to eq :default
|
80
|
+
expect(subject.baz).to eq :baz_result
|
81
|
+
end
|
82
|
+
|
83
|
+
it "evaluates the block with the context of self" do
|
84
|
+
expect(self_value.__double_definition_create__).to be_instance_of(
|
85
|
+
::RR::DoubleDefinitions::DoubleDefinitionCreate
|
86
|
+
)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|