bogus 0.1.4 → 0.1.5
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 +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
|