bogus 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +1 -1
- data/Guardfile +1 -3
- data/Guardfile.cucumber +0 -2
- data/README.md +1 -1
- data/bogus.gemspec +3 -1
- data/features/changelog.md +11 -0
- data/features/configuration/fake_ar_attributes.feature +2 -2
- data/features/contract_tests/contract_tests_mocks.feature +5 -5
- data/features/contract_tests/contract_tests_spies.feature +1 -1
- data/features/contract_tests/contract_tests_stubs.feature +6 -6
- data/features/contract_tests/custom_overwritten_class.feature +4 -4
- data/features/contract_tests/return_value_contracts.feature +2 -2
- data/features/fakes/anonymous_doubles.feature +5 -5
- data/features/fakes/duck_types.feature +9 -9
- data/features/fakes/fake_objects.feature +31 -8
- data/features/fakes/global_fake_configuration.feature +5 -5
- data/features/fakes/replacing_classes.feature +5 -5
- data/features/readme.md +5 -5
- data/features/safe_stubbing/argument_matchers.feature +23 -10
- data/features/safe_stubbing/safe_mocking.feature +1 -1
- data/features/safe_stubbing/safe_stubbing.feature +1 -1
- data/features/safe_stubbing/spies.feature +7 -7
- data/lib/bogus.rb +1 -0
- data/lib/bogus/core_ext.rb +22 -0
- data/lib/bogus/fakes/fake.rb +2 -1
- data/lib/bogus/fakes/method_stringifier.rb +1 -0
- data/lib/bogus/mocking_dsl.rb +4 -0
- data/lib/bogus/stubbing/has_overwritten_methods.rb +28 -10
- data/lib/bogus/stubbing/have_received_matcher.rb +4 -2
- data/lib/bogus/stubbing/matchers/any_args.rb +9 -0
- data/lib/bogus/stubbing/matchers/matches_argument.rb +11 -0
- data/lib/bogus/stubbing/{any_args.rb → matchers/with_arguments.rb} +0 -6
- data/lib/bogus/stubbing/overwrites_methods.rb +6 -1
- data/lib/bogus/stubbing/undefined_return_value.rb +4 -0
- data/lib/bogus/support.rb +11 -0
- data/lib/bogus/version.rb +1 -1
- data/spec/bogus/clean_ruby_spec.rb +1 -1
- data/spec/bogus/configuration_spec.rb +2 -2
- data/spec/bogus/contracts/adds_contract_verification_spec.rb +10 -10
- data/spec/bogus/contracts/adds_recording_spec.rb +4 -4
- data/spec/bogus/contracts/interactions_repository_spec.rb +15 -15
- data/spec/bogus/contracts/proxy_class_spec.rb +7 -7
- data/spec/bogus/contracts/records_double_interactions_spec.rb +1 -1
- data/spec/bogus/contracts/verifies_contracts_spec.rb +3 -3
- data/spec/bogus/fakes/base_class_identifier_spec.rb +1 -1
- data/spec/bogus/fakes/class_methods_spec.rb +4 -5
- data/spec/bogus/fakes/converts_name_to_class_spec.rb +3 -3
- data/spec/bogus/fakes/copies_classes_spec.rb +20 -16
- data/spec/bogus/fakes/creates_fakes_spec.rb +6 -6
- data/spec/bogus/fakes/creates_fakes_with_stubbed_methods_spec.rb +16 -15
- data/spec/bogus/fakes/fake_ar_attributes_spec.rb +3 -3
- data/spec/bogus/fakes/fake_configuration_spec.rb +16 -16
- data/spec/bogus/fakes/fake_registry_spec.rb +2 -2
- data/spec/bogus/fakes/fake_spec.rb +1 -1
- data/spec/bogus/fakes/fakes_classes_spec.rb +4 -4
- data/spec/bogus/fakes/faking_factories_spec.rb +4 -4
- data/spec/bogus/fakes/frozen_fakes_spec.rb +4 -4
- data/spec/bogus/fakes/instance_methods_spec.rb +5 -5
- data/spec/bogus/fakes/makes_ducks_spec.rb +3 -3
- data/spec/bogus/fakes/makes_substitute_methods_spec.rb +1 -1
- data/spec/bogus/fakes/overwriten_classes_spec.rb +3 -3
- data/spec/bogus/fakes/overwrites_classes_spec.rb +2 -2
- data/spec/bogus/fakes/registers_created_fakes_spec.rb +3 -3
- data/spec/bogus/fakes/resets_overwritten_classes_spec.rb +3 -3
- data/spec/bogus/fakes/stubbing_new_method_on_fake_class_spec.rb +25 -0
- data/spec/bogus/mocking_dsl_spec.rb +36 -36
- data/spec/bogus/ruby_2_1_support_spec.rb +38 -0
- data/spec/bogus/ruby_2_support_spec.rb +14 -64
- data/spec/bogus/stubbing/anything_spec.rb +5 -5
- data/spec/bogus/stubbing/double_spec.rb +2 -2
- data/spec/bogus/stubbing/have_received_matcher_spec.rb +11 -6
- data/spec/bogus/stubbing/interaction_spec.rb +7 -7
- data/spec/bogus/stubbing/multi_stubber_spec.rb +2 -2
- data/spec/bogus/stubbing/overwrites_methods_spec.rb +8 -8
- data/spec/bogus/stubbing/record_interactions_spec.rb +3 -3
- data/spec/bogus/stubbing/shadow_spec.rb +28 -28
- data/spec/bogus/stubbing/stubbing_existing_methods_on_fakes_spec.rb +50 -0
- data/spec/bogus/stubbing/tracks_existence_of_test_doubles_spec.rb +2 -2
- data/spec/bogus/stubbing/undefined_return_value_spec.rb +2 -2
- data/spec/spec_helper.rb +6 -1
- data/spec/support/shared_examples_for_keyword_arguments.rb +63 -0
- metadata +160 -160
- data/Gemfile.lock +0 -146
@@ -8,10 +8,10 @@ describe Bogus::Configuration do
|
|
8
8
|
c.search_modules << String
|
9
9
|
end
|
10
10
|
|
11
|
-
Bogus.config.search_modules.
|
11
|
+
expect(Bogus.config.search_modules).to eq [Object, String]
|
12
12
|
end
|
13
13
|
|
14
14
|
it "defaults search_modules to [Object]" do
|
15
|
-
Bogus.config.search_modules.
|
15
|
+
expect(Bogus.config.search_modules).to eq [Object]
|
16
16
|
end
|
17
17
|
end
|
@@ -37,7 +37,7 @@ describe Bogus::AddsContractVerification do
|
|
37
37
|
it "verifies the contract in after_suite" do
|
38
38
|
syntax.run_after_suite
|
39
39
|
|
40
|
-
verifies_contracts.
|
40
|
+
expect(verifies_contracts).to have_received.verify(:some_fake)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -72,14 +72,14 @@ describe Bogus::AddsContractVerification do
|
|
72
72
|
it "overwrites described_class in before" do
|
73
73
|
syntax.run_before
|
74
74
|
|
75
|
-
syntax.described_class.
|
75
|
+
expect(syntax.described_class).to eq overwritten_class
|
76
76
|
end
|
77
77
|
|
78
78
|
it "resets described_class in after" do
|
79
79
|
syntax.run_before
|
80
80
|
syntax.run_after
|
81
81
|
|
82
|
-
syntax.described_class.
|
82
|
+
expect(syntax.described_class).to eq SomeClass
|
83
83
|
end
|
84
84
|
|
85
85
|
it_verifies_contract_after_suite
|
@@ -87,7 +87,7 @@ describe Bogus::AddsContractVerification do
|
|
87
87
|
it "adds recording to described_class" do
|
88
88
|
syntax.run_before
|
89
89
|
|
90
|
-
adds_recording.
|
90
|
+
expect(adds_recording).to have_received.add(:some_fake, SomeClass)
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
@@ -104,14 +104,14 @@ describe Bogus::AddsContractVerification do
|
|
104
104
|
it "does not overwrite described_class in before" do
|
105
105
|
syntax.run_before
|
106
106
|
|
107
|
-
syntax.described_class.
|
107
|
+
expect(syntax.described_class).to eq SomeClass
|
108
108
|
end
|
109
109
|
|
110
110
|
it "does not change described_class in after" do
|
111
111
|
syntax.run_before
|
112
112
|
syntax.run_after
|
113
113
|
|
114
|
-
syntax.described_class.
|
114
|
+
expect(syntax.described_class).to eq SomeClass
|
115
115
|
end
|
116
116
|
|
117
117
|
it_verifies_contract_after_suite
|
@@ -119,7 +119,7 @@ describe Bogus::AddsContractVerification do
|
|
119
119
|
it "adds recording to custom class" do
|
120
120
|
syntax.run_before
|
121
121
|
|
122
|
-
adds_recording.
|
122
|
+
expect(adds_recording).to have_received.add(:some_fake, ClassToOverwrite)
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
@@ -133,14 +133,14 @@ describe Bogus::AddsContractVerification do
|
|
133
133
|
it "does not overwrite described_class in before" do
|
134
134
|
syntax.run_before
|
135
135
|
|
136
|
-
syntax.described_class.
|
136
|
+
expect(syntax.described_class).to be_nil
|
137
137
|
end
|
138
138
|
|
139
139
|
it "does not change described_class in after" do
|
140
140
|
syntax.run_before
|
141
141
|
syntax.run_after
|
142
142
|
|
143
|
-
syntax.described_class.
|
143
|
+
expect(syntax.described_class).to be_nil
|
144
144
|
end
|
145
145
|
|
146
146
|
it_verifies_contract_after_suite
|
@@ -148,7 +148,7 @@ describe Bogus::AddsContractVerification do
|
|
148
148
|
it "adds recording to class based on fake name" do
|
149
149
|
syntax.run_before
|
150
150
|
|
151
|
-
adds_recording.
|
151
|
+
expect(adds_recording).to have_received.add(:some_fake, ClassGuessedFromFakeName)
|
152
152
|
end
|
153
153
|
end
|
154
154
|
end
|
@@ -26,18 +26,18 @@ describe Bogus::AddsRecording do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it "creates the proxy" do
|
29
|
-
create_proxy_class.
|
29
|
+
expect(create_proxy_class).to have_received.call(:library, SampleModule::Library)
|
30
30
|
end
|
31
31
|
|
32
32
|
it "swaps the classes" do
|
33
|
-
overwrites_classes.
|
33
|
+
expect(overwrites_classes).to have_received.overwrite('SampleModule::Library', Object)
|
34
34
|
end
|
35
35
|
|
36
36
|
it "records the overwritten class, so that it can be later restored" do
|
37
|
-
overwritten_classes.
|
37
|
+
expect(overwritten_classes).to have_received.add("SampleModule::Library", SampleModule::Library)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "returns the proxy class" do
|
41
|
-
adds_recording.add(:library, SampleModule::Library).
|
41
|
+
expect(adds_recording.add(:library, SampleModule::Library)).to eq Object
|
42
42
|
end
|
43
43
|
end
|
@@ -10,80 +10,80 @@ describe Bogus::InteractionsRepository do
|
|
10
10
|
it "considers the interaction recorded if it was recorded previously" do
|
11
11
|
interactions_repository.record(:foo, :bar, 1, 2, 3)
|
12
12
|
|
13
|
-
recorded?(:foo, :bar, 1, 2, 3).
|
13
|
+
expect(recorded?(:foo, :bar, 1, 2, 3)).to be_true
|
14
14
|
end
|
15
15
|
|
16
16
|
it "considers the interaction recorded if it returned the same value as passed block" do
|
17
17
|
interactions_repository.record(:foo, :bar) { "a result" }
|
18
18
|
interaction = Bogus::Interaction.new(:bar, []) { "a result" }
|
19
19
|
|
20
|
-
interactions_repository.recorded?(:foo, interaction).
|
20
|
+
expect(interactions_repository.recorded?(:foo, interaction)).to be_true
|
21
21
|
end
|
22
22
|
|
23
23
|
it "does not consider any interactions recorded prior to any recordings" do
|
24
|
-
recorded?(:foo, :bar, 1).
|
24
|
+
expect(recorded?(:foo, :bar, 1)).to be_false
|
25
25
|
end
|
26
26
|
|
27
27
|
it "does not consider the interaction recorded with a different fake name" do
|
28
28
|
interactions_repository.record(:baz, :bar, 1)
|
29
29
|
|
30
|
-
recorded?(:foo, :bar, 1).
|
30
|
+
expect(recorded?(:foo, :bar, 1)).to be_false
|
31
31
|
end
|
32
32
|
|
33
33
|
it "does not consider the interaction recorded with a different method name" do
|
34
34
|
interactions_repository.record(:foo, :baz, 1)
|
35
35
|
|
36
|
-
recorded?(:foo, :bar, 1).
|
36
|
+
expect(recorded?(:foo, :bar, 1)).to be_false
|
37
37
|
end
|
38
38
|
|
39
39
|
it "does not consider the interaction recorded with different method arguments" do
|
40
40
|
interactions_repository.record(:foo, :bar, 1, 2)
|
41
41
|
|
42
|
-
recorded?(:foo, :bar, 1).
|
42
|
+
expect(recorded?(:foo, :bar, 1)).to be_false
|
43
43
|
end
|
44
44
|
|
45
45
|
it "returns a list of interactions for given fake" do
|
46
46
|
interactions_repository.record(:foo, :bar, 1, 2)
|
47
47
|
|
48
48
|
interactions = interactions_repository.for_fake(:foo)
|
49
|
-
interactions.
|
50
|
-
interactions.first.method.
|
51
|
-
interactions.first.args.
|
49
|
+
expect(interactions).to have(1).item
|
50
|
+
expect(interactions.first.method).to eq :bar
|
51
|
+
expect(interactions.first.args).to eq [1, 2]
|
52
52
|
end
|
53
53
|
|
54
54
|
it "ignores arguments if the checked interaction has any_args" do
|
55
55
|
interactions_repository.record(:foo, :bar, 1)
|
56
56
|
|
57
|
-
recorded?(:foo, :bar, Bogus::AnyArgs).
|
57
|
+
expect(recorded?(:foo, :bar, Bogus::AnyArgs)).to be_true
|
58
58
|
end
|
59
59
|
|
60
60
|
it "takes method name into account when matching interaction with wildcard arguments" do
|
61
61
|
interactions_repository.record(:foo, :baz, 1)
|
62
62
|
|
63
|
-
recorded?(:foo, :bar, Bogus::AnyArgs).
|
63
|
+
expect(recorded?(:foo, :bar, Bogus::AnyArgs)).to be_false
|
64
64
|
end
|
65
65
|
|
66
66
|
it "ignores arguments if the recorded interaction was recorded with wildcard argument" do
|
67
67
|
interactions_repository.record(:foo, :bar, 1, 2)
|
68
68
|
|
69
|
-
recorded?(:foo, :bar, 1, Bogus::Anything).
|
69
|
+
expect(recorded?(:foo, :bar, 1, Bogus::Anything)).to be_true
|
70
70
|
end
|
71
71
|
|
72
72
|
it "takes other arguments into account when matching interactions with wildcards" do
|
73
73
|
interactions_repository.record(:foo, :bar, 1, 2)
|
74
74
|
|
75
|
-
recorded?(:foo, :bar, 2, Bogus::Anything).
|
75
|
+
expect(recorded?(:foo, :bar, 2, Bogus::Anything)).to be_false
|
76
76
|
end
|
77
77
|
|
78
78
|
it "ignores arguments if the checked interaction has any_args" do
|
79
79
|
interactions_repository.record(:foo, :bar, 1, 2)
|
80
80
|
|
81
|
-
recorded?(:foo, :bar, 1, Bogus::Anything).
|
81
|
+
expect(recorded?(:foo, :bar, 1, Bogus::Anything)).to be_true
|
82
82
|
end
|
83
83
|
|
84
84
|
it "takes method name into account when matching interaction with wildcard arguments" do
|
85
85
|
interactions_repository.record(:foo, :baz, 1, 2)
|
86
86
|
|
87
|
-
recorded?(:foo, :bar, 1, Bogus::Anything).
|
87
|
+
expect(recorded?(:foo, :bar, 1, Bogus::Anything)).to be_false
|
88
88
|
end
|
89
89
|
end
|
@@ -28,33 +28,33 @@ describe Bogus::ProxyClass do
|
|
28
28
|
let(:interactions_repository) { FakeRepository.new }
|
29
29
|
|
30
30
|
it "returns the proxy" do
|
31
|
-
proxy_class.new.checkout("Moby Dick", "Bob").
|
31
|
+
expect(proxy_class.new.checkout("Moby Dick", "Bob")).to eq :checkouted
|
32
32
|
end
|
33
33
|
|
34
34
|
it "records interactions with created objects" do
|
35
35
|
proxy_class.new.checkout("Moby Dick", "Bob")
|
36
36
|
|
37
|
-
interactions_repository.
|
37
|
+
expect(interactions_repository).to have_recorded(:fake_name, :checkout, "Moby Dick", "Bob")
|
38
38
|
end
|
39
39
|
|
40
40
|
it "responds to every method that the original class responds to" do
|
41
|
-
proxy_class.
|
41
|
+
expect(proxy_class).to respond_to(:find_by_address)
|
42
42
|
end
|
43
43
|
|
44
44
|
it "delegates interactions with the proxy class to wrapped class" do
|
45
|
-
proxy_class.find_by_address("some address").
|
45
|
+
expect(proxy_class.find_by_address("some address")).to eq :the_library
|
46
46
|
end
|
47
47
|
|
48
48
|
it "records interactions with the proxy class" do
|
49
49
|
proxy_class.find_by_address("some address")
|
50
50
|
|
51
|
-
interactions_repository.
|
51
|
+
expect(interactions_repository).to have_recorded(:fake_name, :find_by_address, "some address")
|
52
52
|
end
|
53
53
|
|
54
54
|
it "records return values" do
|
55
55
|
proxy_class.find_by_address("some address")
|
56
56
|
|
57
|
-
interactions_repository.return_value(:fake_name, :find_by_address, "some address").
|
57
|
+
expect(interactions_repository.return_value(:fake_name, :find_by_address, "some address")).to eq :the_library
|
58
58
|
end
|
59
59
|
|
60
60
|
it "re-raises exceptions" do
|
@@ -72,7 +72,7 @@ describe Bogus::ProxyClass do
|
|
72
72
|
end
|
73
73
|
|
74
74
|
it "allows accessing the constants defined on proxied class" do
|
75
|
-
proxy_class::SAMPLE_CONSTANT.
|
75
|
+
expect(proxy_class::SAMPLE_CONSTANT).to eq "foo"
|
76
76
|
end
|
77
77
|
|
78
78
|
class FakeRepository
|
@@ -13,7 +13,7 @@ describe Bogus::RecordsDoubleInteractions do
|
|
13
13
|
|
14
14
|
records_double_interactions.record(object, :method_name, [:foo, 1])
|
15
15
|
|
16
|
-
doubled_interactions.
|
16
|
+
expect(doubled_interactions).to have_received.record(:object_name, :method_name, :foo, 1)
|
17
17
|
end
|
18
18
|
|
19
19
|
it "does not record the interaction if object is not a fake" do
|
@@ -37,9 +37,9 @@ describe Bogus::VerifiesContracts do
|
|
37
37
|
verifies_contracts.verify(name)
|
38
38
|
fail
|
39
39
|
rescue Bogus::ContractNotFulfilled => contract_error
|
40
|
-
contract_error.fake_name.
|
41
|
-
contract_error.missed_interactions.
|
42
|
-
contract_error.actual_interactions.
|
40
|
+
expect(contract_error.fake_name).to eq name
|
41
|
+
expect(contract_error.missed_interactions).to eq missed
|
42
|
+
expect(contract_error.actual_interactions).to eq real
|
43
43
|
end
|
44
44
|
|
45
45
|
def interaction(method)
|
@@ -45,7 +45,7 @@ module SampleForBaseIdentifier
|
|
45
45
|
it "returns the same for is_a?(#{klass})" do
|
46
46
|
expected = instance.is_a?(klass)
|
47
47
|
actual = Bogus::BaseClassIdentifier.base_class?(copied_class, klass)
|
48
|
-
actual.
|
48
|
+
expect(actual).to eq expected
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
@@ -22,18 +22,17 @@ module Bogus
|
|
22
22
|
let(:class_methods) { ClassMethods.new(SampleClass) }
|
23
23
|
|
24
24
|
it "lists the class methods excluding the ones added by Bogus" do
|
25
|
-
class_methods.all.
|
25
|
+
expect(class_methods.all).to match_array([:bar, :hello])
|
26
26
|
end
|
27
27
|
|
28
28
|
it "returns the instance methods by name" do
|
29
|
-
class_methods.get(:bar).
|
30
|
-
SampleClass.method(:bar)
|
29
|
+
expect(class_methods.get(:bar)).to eq SampleClass.method(:bar)
|
31
30
|
end
|
32
31
|
|
33
32
|
it "removes methods by name" do
|
34
33
|
class_methods.remove(:hello)
|
35
34
|
|
36
|
-
SampleClass.
|
35
|
+
expect(SampleClass).to_not respond_to(:hello)
|
37
36
|
end
|
38
37
|
|
39
38
|
it "defines instance methods" do
|
@@ -43,7 +42,7 @@ module Bogus
|
|
43
42
|
end
|
44
43
|
EOF
|
45
44
|
|
46
|
-
SampleClass.greet("Joe").
|
45
|
+
expect(SampleClass.greet("Joe")).to eq "Hello, Joe!"
|
47
46
|
end
|
48
47
|
end
|
49
48
|
end
|
@@ -15,19 +15,19 @@ describe Bogus::ConvertsNameToClass do
|
|
15
15
|
it "finds classes in golbal namespace by default" do
|
16
16
|
converts_name_to_class = Bogus::ConvertsNameToClass.new(Bogus.config.search_modules)
|
17
17
|
|
18
|
-
converts_name_to_class.convert(:foo_bar_baz).
|
18
|
+
expect(converts_name_to_class.convert(:foo_bar_baz)).to eq FooBarBaz
|
19
19
|
end
|
20
20
|
|
21
21
|
it "looks in the modules in the specified order" do
|
22
22
|
converts_name_to_class = Bogus::ConvertsNameToClass.new([Foo, Bar])
|
23
23
|
|
24
|
-
converts_name_to_class.convert(:foo_bar_baz).
|
24
|
+
expect(converts_name_to_class.convert(:foo_bar_baz)).to eq Foo::FooBarBaz
|
25
25
|
end
|
26
26
|
|
27
27
|
it "looks in the next module on the list if the first does not contain the class" do
|
28
28
|
converts_name_to_class = Bogus::ConvertsNameToClass.new([Foo, Bar])
|
29
29
|
|
30
|
-
converts_name_to_class.convert(:bam).
|
30
|
+
expect(converts_name_to_class.convert(:bam)).to eq Bar::Bam
|
31
31
|
end
|
32
32
|
|
33
33
|
it "raises an error if it can't find the class" do
|
@@ -20,33 +20,33 @@ describe Bogus::CopiesClasses do
|
|
20
20
|
|
21
21
|
shared_examples_for 'the copied class' do
|
22
22
|
it "copies methods with no arguments" do
|
23
|
-
subject.
|
23
|
+
expect(subject).to respond_to(:foo)
|
24
24
|
subject.foo
|
25
25
|
end
|
26
26
|
|
27
27
|
it "copies methods with explicit arguments" do
|
28
|
-
subject.
|
28
|
+
expect(subject).to respond_to(:bar)
|
29
29
|
|
30
|
-
subject.method(:bar).arity.
|
30
|
+
expect(subject.method(:bar).arity).to eq 1
|
31
31
|
|
32
32
|
subject.bar('hello')
|
33
33
|
end
|
34
34
|
|
35
35
|
it "copies methods with variable arguments" do
|
36
|
-
subject.
|
36
|
+
expect(subject).to respond_to(:baz)
|
37
37
|
|
38
38
|
subject.baz('hello', 'foo', 'bar', 'baz')
|
39
39
|
end
|
40
40
|
|
41
41
|
it "copies methods with default arguments" do
|
42
|
-
subject.
|
42
|
+
expect(subject).to respond_to(:bam)
|
43
43
|
|
44
44
|
subject.bam
|
45
45
|
subject.bam(hello: 'world')
|
46
46
|
end
|
47
47
|
|
48
48
|
it "copies methods with block arguments" do
|
49
|
-
subject.
|
49
|
+
expect(subject).to respond_to(:baa)
|
50
50
|
|
51
51
|
subject.baa('hello')
|
52
52
|
subject.baa('hello') {}
|
@@ -66,7 +66,7 @@ describe Bogus::CopiesClasses do
|
|
66
66
|
let(:klass) { FooWithInstanceMethods }
|
67
67
|
|
68
68
|
it "does not overwrite nested constants" do
|
69
|
-
fake_class::CONST.
|
69
|
+
expect(fake_class::CONST).to eq "the const"
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
@@ -91,13 +91,13 @@ describe Bogus::CopiesClasses do
|
|
91
91
|
it "adds a no-arg constructor" do
|
92
92
|
instance = fake_class.__create__
|
93
93
|
|
94
|
-
instance.
|
94
|
+
expect(instance).to respond_to(:foo)
|
95
95
|
end
|
96
96
|
|
97
97
|
it "adds a constructor that allows passing the correct number of arguments" do
|
98
98
|
instance = fake_class.new('hello')
|
99
99
|
|
100
|
-
instance.
|
100
|
+
expect(instance).to respond_to(:foo)
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
@@ -121,27 +121,31 @@ describe Bogus::CopiesClasses do
|
|
121
121
|
let(:klass) { SomeModule::SomeClass }
|
122
122
|
|
123
123
|
it "should copy the class name" do
|
124
|
-
fake.class.name.
|
124
|
+
expect(fake.class.name).to eq 'SomeModule::SomeClass'
|
125
125
|
end
|
126
126
|
|
127
127
|
it "should override kind_of?" do
|
128
|
-
fake.kind_of?(SomeModule::SomeClass).
|
128
|
+
expect(fake.kind_of?(SomeModule::SomeClass)).to be_true
|
129
129
|
end
|
130
130
|
|
131
131
|
it "should override instance_of?" do
|
132
|
-
fake.instance_of?(SomeModule::SomeClass).
|
132
|
+
expect(fake.instance_of?(SomeModule::SomeClass)).to be_true
|
133
133
|
end
|
134
134
|
|
135
135
|
it "should override is_a?" do
|
136
|
-
fake.is_a?(SomeModule::SomeClass).
|
136
|
+
expect(fake.is_a?(SomeModule::SomeClass)).to be_true
|
137
137
|
end
|
138
138
|
|
139
139
|
it "should include class name in the output of fake's class #to_s" do
|
140
|
-
fake.class.to_s.
|
140
|
+
expect(fake.class.to_s).to include(klass.name)
|
141
141
|
end
|
142
142
|
|
143
143
|
it "should include class name in the output of fake's #to_s" do
|
144
|
-
fake.to_s.
|
144
|
+
expect(fake.to_s).to include(klass.name)
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'should override ===' do
|
148
|
+
expect(SomeModule::SomeClass === fake).to be_true
|
145
149
|
end
|
146
150
|
end
|
147
151
|
|
@@ -193,7 +197,7 @@ describe Bogus::CopiesClasses do
|
|
193
197
|
let(:klass) { SomeModel }
|
194
198
|
|
195
199
|
it "copies those methods" do
|
196
|
-
fake.
|
200
|
+
expect(fake).to respond_to(:save)
|
197
201
|
end
|
198
202
|
end
|
199
203
|
end
|