tzu_mock 1.2.0 → 1.4.0
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 +5 -5
- data/README.md +1 -1
- data/lib/tzu_mock/class_methods.rb +10 -3
- data/lib/tzu_mock/mocker.rb +2 -2
- data/lib/tzu_mock/result_builder.rb +2 -2
- data/lib/tzu_mock/version.rb +5 -0
- data/lib/tzu_mock.rb +7 -6
- metadata +12 -59
- data/spec/spec_helper.rb +0 -8
- data/spec/tzu_mock_spec.rb +0 -210
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b451e46902e3dd97214eefcb8850032cda99c52994aa4f79a085ad9d55451064
|
4
|
+
data.tar.gz: 896fcfc6bdf7ad453ecfdbcc742e22e80c5f686f18ee197334477c6e112d03c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b5b594dba18bf9e53d3e13496f9f991b9561de558faccba09796ee52b7b2c6ae16ebe74dbf48f5cfd57883826b2998f6ac93fa96c9728c9052296384b7e353a
|
7
|
+
data.tar.gz: 65633578d6b4335c811698ba2adc9976e2a9f8fae4c5ffb0a5c2f41a56cd5333038426096e71f8beffc00dd7b9b1726d7611ae7c71e46a01ec7330aecc1db2ab
|
data/README.md
CHANGED
@@ -1,14 +1,21 @@
|
|
1
1
|
module TzuMock
|
2
2
|
module ClassMethods
|
3
|
-
|
4
|
-
|
3
|
+
MISSING_METHODS = %i[success invalid failure].freeze
|
4
|
+
|
5
|
+
def method_missing(method, *args, &block)
|
6
|
+
return super unless MISSING_METHODS.include? method
|
7
|
+
|
5
8
|
prepare(method, *args)
|
6
9
|
end
|
7
10
|
|
11
|
+
def respond_to_missing?(method_name, include_private = false)
|
12
|
+
MISSING_METHODS.include?(method_name) || super
|
13
|
+
end
|
14
|
+
|
8
15
|
def prepare(type, klass, method = nil)
|
9
16
|
# Get the rspec block context. Will not work if you call TzuMock#prepare directly.
|
10
17
|
# Call TzuMock#success, TzuMock#invalid, or TzuMock#failure instead
|
11
|
-
rspec_context = binding.of_caller(2).eval(
|
18
|
+
rspec_context = binding.of_caller(2).eval("self")
|
12
19
|
|
13
20
|
Mocker.new(type, klass, rspec_context, method).mock
|
14
21
|
end
|
data/lib/tzu_mock/mocker.rb
CHANGED
@@ -19,7 +19,7 @@ module TzuMock
|
|
19
19
|
|
20
20
|
# Need to pass variables in explicity to give the Proc access to them
|
21
21
|
def mock_proc(klass, methods, success, result, type)
|
22
|
-
|
22
|
+
proc do
|
23
23
|
methods.each do |method|
|
24
24
|
allow(klass).to receive(method) do |&block|
|
25
25
|
outcome = Tzu::Outcome.new(success, result, type)
|
@@ -48,7 +48,7 @@ module TzuMock
|
|
48
48
|
when :failure
|
49
49
|
:execution
|
50
50
|
else
|
51
|
-
raise ArgumentError.new(
|
51
|
+
raise ArgumentError.new("Invalid type, must be :success, :invalid, or :failure")
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "hashie"
|
2
2
|
|
3
3
|
module TzuMock
|
4
4
|
class HashResult < Hash
|
@@ -27,7 +27,7 @@ module TzuMock
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def build_array(result)
|
30
|
-
result.map { |r| r.is_a?(Hash) ? build_hash(r) : r}
|
30
|
+
result.map { |r| r.is_a?(Hash) ? build_hash(r) : r }
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
data/lib/tzu_mock.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require "binding_of_caller"
|
2
|
+
require "tzu_mock/class_methods"
|
3
|
+
require "tzu_mock/result_builder"
|
4
|
+
require "tzu_mock/mocker"
|
5
|
+
require "tzu_mock/configuration"
|
6
6
|
|
7
7
|
module TzuMock
|
8
|
-
extend
|
8
|
+
extend Configuration
|
9
|
+
extend ClassMethods
|
9
10
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tzu_mock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Blake Turner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: binding_of_caller
|
@@ -26,68 +26,26 @@ dependencies:
|
|
26
26
|
version: '0.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: hashie
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 3.4.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 3.4.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: tzu
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
33
|
+
version: '3'
|
34
|
+
type: :runtime
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rspec
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 2.4.0
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 2.4.0
|
40
|
+
version: '3'
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rake
|
42
|
+
name: tzu
|
85
43
|
requirement: !ruby/object:Gem::Requirement
|
86
44
|
requirements:
|
87
45
|
- - ">="
|
88
46
|
- !ruby/object:Gem::Version
|
89
47
|
version: '0'
|
90
|
-
type: :
|
48
|
+
type: :runtime
|
91
49
|
prerelease: false
|
92
50
|
version_requirements: !ruby/object:Gem::Requirement
|
93
51
|
requirements:
|
@@ -95,13 +53,13 @@ dependencies:
|
|
95
53
|
- !ruby/object:Gem::Version
|
96
54
|
version: '0'
|
97
55
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
56
|
+
name: rspec
|
99
57
|
requirement: !ruby/object:Gem::Requirement
|
100
58
|
requirements:
|
101
59
|
- - ">="
|
102
60
|
- !ruby/object:Gem::Version
|
103
61
|
version: '0'
|
104
|
-
type: :
|
62
|
+
type: :runtime
|
105
63
|
prerelease: false
|
106
64
|
version_requirements: !ruby/object:Gem::Requirement
|
107
65
|
requirements:
|
@@ -121,8 +79,7 @@ files:
|
|
121
79
|
- lib/tzu_mock/configuration.rb
|
122
80
|
- lib/tzu_mock/mocker.rb
|
123
81
|
- lib/tzu_mock/result_builder.rb
|
124
|
-
-
|
125
|
-
- spec/tzu_mock_spec.rb
|
82
|
+
- lib/tzu_mock/version.rb
|
126
83
|
homepage: https://github.com/onfido/tzu_mock
|
127
84
|
licenses:
|
128
85
|
- MIT
|
@@ -142,12 +99,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
99
|
- !ruby/object:Gem::Version
|
143
100
|
version: '0'
|
144
101
|
requirements: []
|
145
|
-
|
146
|
-
rubygems_version: 2.2.2
|
102
|
+
rubygems_version: 3.4.22
|
147
103
|
signing_key:
|
148
104
|
specification_version: 4
|
149
105
|
summary: TDD with Tzu!
|
150
|
-
test_files:
|
151
|
-
- spec/spec_helper.rb
|
152
|
-
- spec/tzu_mock_spec.rb
|
153
|
-
has_rdoc:
|
106
|
+
test_files: []
|
data/spec/spec_helper.rb
DELETED
data/spec/tzu_mock_spec.rb
DELETED
@@ -1,210 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe TzuMock do
|
4
|
-
let(:result) { 'Desired Result' }
|
5
|
-
let(:error) { { error: 'ERROR' } }
|
6
|
-
let(:params) { { last_name: 'Turner' } }
|
7
|
-
|
8
|
-
class UpdateUser
|
9
|
-
include Tzu
|
10
|
-
include Tzu::Validation
|
11
|
-
|
12
|
-
def call(params)
|
13
|
-
raise ArgumentError.new('I should be mocked!')
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
class MockController
|
18
|
-
attr_reader :method_called
|
19
|
-
|
20
|
-
def update(params = {})
|
21
|
-
UpdateUser.run(params) do
|
22
|
-
success do |result|
|
23
|
-
@method_called = :success
|
24
|
-
end
|
25
|
-
|
26
|
-
invalid do |error|
|
27
|
-
@method_called = :invalid
|
28
|
-
end
|
29
|
-
|
30
|
-
failure do |error|
|
31
|
-
@method_called = :failure
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context 'configuration' do
|
38
|
-
context 'when no stub methods have been added' do
|
39
|
-
it 'configures the default stub methods' do
|
40
|
-
expect(TzuMock.configuration.stub_methods).to eq TzuMock::Config::DEFAULT_MOCK_METHODS
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context 'when stub methods have been added' do
|
45
|
-
let(:stub_methods) { [:go, :go!] }
|
46
|
-
|
47
|
-
before do
|
48
|
-
TzuMock.configure { |config| config.stub_methods = stub_methods }
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'appends the configured methods to the default stub methods' do
|
52
|
-
expect(TzuMock.configuration.stub_methods.sort).to eq (TzuMock::Config::DEFAULT_MOCK_METHODS + stub_methods).sort
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
context 'result builder' do
|
58
|
-
let(:outcome) { UpdateUser.run!(params) }
|
59
|
-
|
60
|
-
before { TzuMock.success(UpdateUser).returns(result) }
|
61
|
-
|
62
|
-
context 'hash' do
|
63
|
-
let(:result) { {name: 'me!'} }
|
64
|
-
it 'returns hash attributes as methods' do
|
65
|
-
expect(outcome.result.is_a?(Hash)).to be_truthy
|
66
|
-
expect(outcome.result.name).to eq(result[:name])
|
67
|
-
end
|
68
|
-
end
|
69
|
-
context 'array' do
|
70
|
-
context 'contains hash' do
|
71
|
-
let(:result) { [{name: 'other'}] }
|
72
|
-
it 'responds to name' do
|
73
|
-
expect(outcome.result.first.is_a?(Hash)).to be_truthy
|
74
|
-
expect(outcome.result.first.name).to eq(result.first[:name])
|
75
|
-
end
|
76
|
-
end
|
77
|
-
context 'does not ctonain hash' do
|
78
|
-
let(:result) { ['me'] }
|
79
|
-
it 'responds to name' do
|
80
|
-
expect(outcome.result.first.is_a?(String)).to be_truthy
|
81
|
-
expect(outcome.result).to eq(result)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
context 'string' do
|
86
|
-
let(:result) { 'me!' }
|
87
|
-
it 'responds to name' do
|
88
|
-
expect(outcome.result.is_a?(String)).to be_truthy
|
89
|
-
expect(outcome.result).to eq(result)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
context 'when invocation does not have a block' do
|
95
|
-
context 'success' do
|
96
|
-
before { TzuMock.success(UpdateUser).returns(result) }
|
97
|
-
|
98
|
-
let(:outcome) { UpdateUser.run!(params) }
|
99
|
-
|
100
|
-
it 'mocks a successful outcome and allows parameters to be verified' do
|
101
|
-
expect(outcome.success?).to be true
|
102
|
-
expect(outcome.result).to eq result
|
103
|
-
expect(outcome.type).to be nil
|
104
|
-
expect(UpdateUser).to have_received(:run!).with(params)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
context 'invalid' do
|
109
|
-
before { TzuMock.invalid(UpdateUser).returns(error) }
|
110
|
-
|
111
|
-
let(:outcome) { UpdateUser.run!(params) }
|
112
|
-
|
113
|
-
it 'mocks an invalid outcome and allows parameters to be verified' do
|
114
|
-
expect(outcome.success?).to be false
|
115
|
-
expect(outcome.result).to eq error
|
116
|
-
expect(outcome.type).to eq :validation
|
117
|
-
expect(UpdateUser).to have_received(:run!).with(params)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
context 'failure' do
|
122
|
-
before { TzuMock.failure(UpdateUser).returns(error) }
|
123
|
-
|
124
|
-
let(:outcome) { UpdateUser.run(params) }
|
125
|
-
|
126
|
-
it 'mocks a failed outcome and allows parameters to be verified' do
|
127
|
-
expect(outcome.success?).to be false
|
128
|
-
expect(outcome.result).to eq error
|
129
|
-
expect(outcome.type).to eq :execution
|
130
|
-
expect(UpdateUser).to have_received(:run).with(params)
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
context 'when invocation has a block' do
|
136
|
-
context 'success' do
|
137
|
-
before { TzuMock.success(UpdateUser).returns(result) }
|
138
|
-
|
139
|
-
let(:controller) { MockController.new }
|
140
|
-
|
141
|
-
it 'mocks a successful outcome and allows parameters to be verified' do
|
142
|
-
controller.update(params)
|
143
|
-
expect(UpdateUser).to have_received(:run).with(params)
|
144
|
-
expect(controller.method_called).to eq :success
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
context 'invalid' do
|
149
|
-
before { TzuMock.invalid(UpdateUser).returns(error) }
|
150
|
-
|
151
|
-
let(:controller) { MockController.new }
|
152
|
-
|
153
|
-
it 'mocks a successful outcome and allows parameters to be verified' do
|
154
|
-
controller.update(params)
|
155
|
-
expect(UpdateUser).to have_received(:run).with(params)
|
156
|
-
expect(controller.method_called).to eq :invalid
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
context 'failure' do
|
161
|
-
before { TzuMock.failure(UpdateUser).returns(error) }
|
162
|
-
|
163
|
-
let(:controller) { MockController.new }
|
164
|
-
|
165
|
-
it 'mocks a successful outcome and allows parameters to be verified' do
|
166
|
-
controller.update(params)
|
167
|
-
expect(UpdateUser).to have_received(:run).with(params)
|
168
|
-
expect(controller.method_called).to eq :failure
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
context 'TzuMock receive no return result' do
|
174
|
-
context 'success' do
|
175
|
-
before { TzuMock.success(UpdateUser) }
|
176
|
-
|
177
|
-
let(:outcome) { UpdateUser.run!(params) }
|
178
|
-
|
179
|
-
it 'mocks a successful outcome and allows parameters to be verified' do
|
180
|
-
expect(outcome.success?).to be true
|
181
|
-
expect(outcome.type).to be nil
|
182
|
-
expect(UpdateUser).to have_received(:run!).with(params)
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
context 'invalid' do
|
187
|
-
before { TzuMock.invalid(UpdateUser) }
|
188
|
-
|
189
|
-
let(:outcome) { UpdateUser.run!(params) }
|
190
|
-
|
191
|
-
it 'mocks an invalid outcome and allows parameters to be verified' do
|
192
|
-
expect(outcome.success?).to be false
|
193
|
-
expect(outcome.type).to eq :validation
|
194
|
-
expect(UpdateUser).to have_received(:run!).with(params)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
context 'failure' do
|
199
|
-
before { TzuMock.failure(UpdateUser) }
|
200
|
-
|
201
|
-
let(:outcome) { UpdateUser.run(params) }
|
202
|
-
|
203
|
-
it 'mocks a failed outcome and allows parameters to be verified' do
|
204
|
-
expect(outcome.success?).to be false
|
205
|
-
expect(outcome.type).to eq :execution
|
206
|
-
expect(UpdateUser).to have_received(:run).with(params)
|
207
|
-
end
|
208
|
-
end
|
209
|
-
end
|
210
|
-
end
|