optimizeplayer 0.0.1
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 +9 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +26 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/optimize_player.rb +45 -0
- data/lib/optimize_player/account.rb +24 -0
- data/lib/optimize_player/api_object.rb +161 -0
- data/lib/optimize_player/asset.rb +5 -0
- data/lib/optimize_player/client.rb +177 -0
- data/lib/optimize_player/converter.rb +16 -0
- data/lib/optimize_player/encoding.rb +5 -0
- data/lib/optimize_player/errors/api_connection_error.rb +7 -0
- data/lib/optimize_player/errors/api_error.rb +7 -0
- data/lib/optimize_player/errors/bad_request.rb +7 -0
- data/lib/optimize_player/errors/connection_error.rb +7 -0
- data/lib/optimize_player/errors/forbidden.rb +7 -0
- data/lib/optimize_player/errors/method_not_allowed.rb +7 -0
- data/lib/optimize_player/errors/optimize_player_error.rb +20 -0
- data/lib/optimize_player/errors/resource_not_found.rb +7 -0
- data/lib/optimize_player/errors/socket_error.rb +7 -0
- data/lib/optimize_player/errors/unauthorized.rb +7 -0
- data/lib/optimize_player/errors/unhandled_error.rb +7 -0
- data/lib/optimize_player/errors/unprocessable_entity.rb +7 -0
- data/lib/optimize_player/folder.rb +5 -0
- data/lib/optimize_player/integration.rb +5 -0
- data/lib/optimize_player/media_info.rb +5 -0
- data/lib/optimize_player/project.rb +24 -0
- data/lib/optimize_player/proxies/account_proxy.rb +24 -0
- data/lib/optimize_player/proxies/asset_proxy.rb +9 -0
- data/lib/optimize_player/proxies/base_proxy.rb +36 -0
- data/lib/optimize_player/proxies/folder_proxy.rb +9 -0
- data/lib/optimize_player/proxies/integration_proxy.rb +9 -0
- data/lib/optimize_player/proxies/project_proxy.rb +14 -0
- data/lib/optimize_player/signer.rb +142 -0
- data/lib/optimize_player/version.rb +3 -0
- data/lib/optimizeplayer.rb +2 -0
- data/optimize_player.gemspec +29 -0
- data/spec/client_spec.rb +305 -0
- data/spec/converter_spec.rb +63 -0
- data/spec/optimize_player_spec.rb +7 -0
- data/spec/proxy_spec.rb +67 -0
- data/spec/spec_helper.rb +2 -0
- metadata +175 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'optimize_player/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "optimizeplayer"
|
8
|
+
spec.version = OptimizePlayer::VERSION
|
9
|
+
spec.authors = ["Oleg Haidul"]
|
10
|
+
spec.email = ["oleghaidul@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Ruby wrapper for OptimizePlayer API}
|
13
|
+
spec.description = %q{A ruby library for OptimizePlayer's data API.}
|
14
|
+
spec.homepage = "http://github.com/optimizeplayer/optimizeplayer-ruby"
|
15
|
+
spec.licenses = ["MIT"]
|
16
|
+
|
17
|
+
spec.files = `git ls-files`.split("\n")
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_dependency('rack')
|
23
|
+
spec.add_dependency('rest-client', '~> 1.4')
|
24
|
+
spec.add_dependency('json', '~> 1.8.1')
|
25
|
+
|
26
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
27
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
28
|
+
spec.add_development_dependency "rspec"
|
29
|
+
end
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,305 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OptimizePlayer::Client do
|
4
|
+
subject { described_class.new('access_token', 'secret_key') }
|
5
|
+
|
6
|
+
context 'proxies' do
|
7
|
+
it 'returns account proxy' do
|
8
|
+
expect(subject.account).to be_a_kind_of(OptimizePlayer::Proxies::AccountProxy)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns project proxy' do
|
12
|
+
expect(subject.projects).to be_a_kind_of(OptimizePlayer::Proxies::ProjectProxy)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'returns asset proxy' do
|
16
|
+
expect(subject.assets).to be_a_kind_of(OptimizePlayer::Proxies::AssetProxy)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'returns folder proxy' do
|
20
|
+
expect(subject.folders).to be_a_kind_of(OptimizePlayer::Proxies::FolderProxy)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'returns integration proxy' do
|
24
|
+
expect(subject.integrations).to be_a_kind_of(OptimizePlayer::Proxies::IntegrationProxy)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#send_request' do
|
29
|
+
context 'url' do
|
30
|
+
before do
|
31
|
+
allow(RestClient::Request).to receive(:execute).and_return(response)
|
32
|
+
allow_any_instance_of(OptimizePlayer::Signer).to receive(:sign_url).and_return('signed_url')
|
33
|
+
end
|
34
|
+
|
35
|
+
let(:response) { double(:body => {:key => 'value'}.to_json) }
|
36
|
+
|
37
|
+
it 'executes with signed url' do
|
38
|
+
expect(RestClient::Request).to receive(:execute).with(hash_including(:url => "signed_url"))
|
39
|
+
subject.send_request('projects', :get)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'executes with signed url without a payload' do
|
43
|
+
expect(RestClient::Request).to receive(:execute).with(hash_including(:url => "signed_url"))
|
44
|
+
subject.send_request('projects', :get, {:attr => 'value'})
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'payload' do
|
49
|
+
before do
|
50
|
+
allow(RestClient::Request).to receive(:execute).and_return(response)
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:response) { double(:body => {:key => 'value'}.to_json) }
|
54
|
+
|
55
|
+
it 'executes without a payload' do
|
56
|
+
expect(RestClient::Request).to receive(:execute).with(hash_including(:payload => nil))
|
57
|
+
subject.send_request('projects', :get)
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'executes with empty payload' do
|
61
|
+
expect(RestClient::Request).to receive(:execute).with(hash_including(:payload => {}))
|
62
|
+
subject.send_request('projects', :post)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'executes with empty payload' do
|
66
|
+
expect(RestClient::Request).to receive(:execute).with(hash_including(:payload => {:attr => 'value'}))
|
67
|
+
subject.send_request('projects', :post, {:attr => 'value'})
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'when response is success' do
|
72
|
+
before do
|
73
|
+
allow(RestClient::Request).to receive(:execute).and_return(response)
|
74
|
+
end
|
75
|
+
|
76
|
+
context 'with json' do
|
77
|
+
let(:response) { double(:body => {:key => 'value'}.to_json) }
|
78
|
+
|
79
|
+
it 'returns success json' do
|
80
|
+
result = subject.send_request('projects', :get)
|
81
|
+
expect(result).to eq({'key' => 'value'})
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'with non-json format' do
|
86
|
+
let(:response) { double(:body => "simple string", :code => '200') }
|
87
|
+
|
88
|
+
it 'returns success json' do
|
89
|
+
expect {
|
90
|
+
subject.send_request('projects', :get)
|
91
|
+
}.to raise_error(OptimizePlayer::Errors::ApiError, /Invalid response object from API: "simple string"/)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'API errors' do
|
97
|
+
let(:response_code) { nil }
|
98
|
+
let(:response_body) { {:error => 'error', :message => 'message'}.to_json }
|
99
|
+
|
100
|
+
before do
|
101
|
+
allow_any_instance_of(RestClient::BadRequest).to receive(:http_code).and_return(response_code)
|
102
|
+
allow_any_instance_of(RestClient::BadRequest).to receive(:http_body).and_return(response_body)
|
103
|
+
allow(RestClient::Request).to receive(:execute).and_raise(RestClient::BadRequest)
|
104
|
+
end
|
105
|
+
|
106
|
+
context 'when 400 error is raised' do
|
107
|
+
let(:response_code) { 400 }
|
108
|
+
|
109
|
+
it 'should raise OptimizePlayer 400 error' do
|
110
|
+
expect {
|
111
|
+
subject.send_request('projects', :get)
|
112
|
+
}.to raise_error { |error|
|
113
|
+
expect(error.status).to eq(400)
|
114
|
+
expect(error.error).to eq('error')
|
115
|
+
expect(error.message).to eq('message')
|
116
|
+
expect(error).to be_a(OptimizePlayer::Errors::BadRequest)
|
117
|
+
}
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context 'when 401 error is raised' do
|
122
|
+
let(:response_code) { 401 }
|
123
|
+
|
124
|
+
it 'should raise OptimizePlayer 401 error' do
|
125
|
+
expect {
|
126
|
+
subject.send_request('projects', :get)
|
127
|
+
}.to raise_error { |error|
|
128
|
+
expect(error.status).to eq(401)
|
129
|
+
expect(error.error).to eq('error')
|
130
|
+
expect(error.message).to eq('message')
|
131
|
+
expect(error).to be_a(OptimizePlayer::Errors::BadRequest)
|
132
|
+
}
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context 'when 404 error is raised' do
|
137
|
+
let(:response_code) { 404 }
|
138
|
+
|
139
|
+
it 'should raise OptimizePlayer 404 error' do
|
140
|
+
expect {
|
141
|
+
subject.send_request('projects', :get)
|
142
|
+
}.to raise_error { |error|
|
143
|
+
expect(error.status).to eq(404)
|
144
|
+
expect(error.error).to eq('error')
|
145
|
+
expect(error.message).to eq('message')
|
146
|
+
expect(error).to be_a(OptimizePlayer::Errors::BadRequest)
|
147
|
+
}
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
context 'when 403 error is raised' do
|
152
|
+
let(:response_code) { 403 }
|
153
|
+
|
154
|
+
it 'should raise OptimizePlayer 403 error' do
|
155
|
+
expect {
|
156
|
+
subject.send_request('projects', :get)
|
157
|
+
}.to raise_error { |error|
|
158
|
+
expect(error.status).to eq(403)
|
159
|
+
expect(error.error).to eq('error')
|
160
|
+
expect(error.message).to eq('message')
|
161
|
+
expect(error).to be_a(OptimizePlayer::Errors::BadRequest)
|
162
|
+
}
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
context 'when 422 error is raised' do
|
167
|
+
let(:response_code) { 422 }
|
168
|
+
|
169
|
+
it 'should raise OptimizePlayer 422 error' do
|
170
|
+
expect {
|
171
|
+
subject.send_request('projects', :get)
|
172
|
+
}.to raise_error { |error|
|
173
|
+
expect(error.status).to eq(422)
|
174
|
+
expect(error.error).to eq('error')
|
175
|
+
expect(error.message).to eq('message')
|
176
|
+
expect(error).to be_a(OptimizePlayer::Errors::BadRequest)
|
177
|
+
}
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
context 'undefined errors' do
|
183
|
+
before do
|
184
|
+
allow(RestClient::Request).to receive(:execute).and_raise(RestClient::ExceptionWithResponse)
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'when custom json error is raised' do
|
188
|
+
before do
|
189
|
+
allow_any_instance_of(RestClient::ExceptionWithResponse).to receive(:http_code).and_return(1111)
|
190
|
+
allow_any_instance_of(RestClient::ExceptionWithResponse).to receive(:http_body).and_return({:error => 'error', :message => 'message'}.to_json)
|
191
|
+
end
|
192
|
+
|
193
|
+
it 'should raise OptimizePlayer API error' do
|
194
|
+
expect {
|
195
|
+
subject.send_request('projects', :get)
|
196
|
+
}.to raise_error { |error|
|
197
|
+
expect(error.error).to eq('error')
|
198
|
+
expect(error.message).to eq('message')
|
199
|
+
expect(error).to be_a(OptimizePlayer::Errors::ApiError)
|
200
|
+
}
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
context 'when custom non-json error is raised' do
|
205
|
+
before do
|
206
|
+
allow_any_instance_of(RestClient::ExceptionWithResponse).to receive(:http_code).and_return(nil)
|
207
|
+
allow_any_instance_of(RestClient::ExceptionWithResponse).to receive(:http_body).and_return(nil)
|
208
|
+
end
|
209
|
+
|
210
|
+
it 'should raise OptimizePlayer UnhandledError' do
|
211
|
+
expect {
|
212
|
+
subject.send_request('projects', :get)
|
213
|
+
}.to raise_error { |error|
|
214
|
+
expect(error.error).to eq('UnhandledError')
|
215
|
+
expect(error.message).to eq('Unexpected error communicating with OptimizePlayer.')
|
216
|
+
expect(error).to be_a(OptimizePlayer::Errors::UnhandledError)
|
217
|
+
}
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
context 'socket error' do
|
223
|
+
before do
|
224
|
+
allow(RestClient::Request).to receive(:execute).and_raise(SocketError)
|
225
|
+
end
|
226
|
+
|
227
|
+
it 'should raise OptimizePlayer SocketError' do
|
228
|
+
expect {
|
229
|
+
subject.send_request('projects', :get)
|
230
|
+
}.to raise_error { |error|
|
231
|
+
expect(error.error).to eq('NetworkError')
|
232
|
+
expect(error.message).to eq('Unexpected error communicating when trying to connect to OptimizePlayer. You may be seeing this message because your DNS is not working.')
|
233
|
+
expect(error).to be_a(OptimizePlayer::Errors::SocketError)
|
234
|
+
}
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
context 'Errno::ECONNREFUSED error' do
|
239
|
+
before do
|
240
|
+
allow(RestClient::Request).to receive(:execute).and_raise(Errno::ECONNREFUSED)
|
241
|
+
end
|
242
|
+
|
243
|
+
it 'should raise OptimizePlayer connection error' do
|
244
|
+
expect {
|
245
|
+
subject.send_request('projects', :get)
|
246
|
+
}.to raise_error { |error|
|
247
|
+
expect(error.error).to eq('ConnectionError')
|
248
|
+
expect(error.message).to eq('Unexpected error communicating with OptimizePlayer.')
|
249
|
+
expect(error).to be_a(OptimizePlayer::Errors::ConnectionError)
|
250
|
+
}
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
context 'Errno::ServerBrokeConnection error' do
|
255
|
+
before do
|
256
|
+
allow(RestClient::Request).to receive(:execute).and_raise(RestClient::ServerBrokeConnection)
|
257
|
+
end
|
258
|
+
|
259
|
+
it 'should raise OptimizePlayer connection error' do
|
260
|
+
expect {
|
261
|
+
subject.send_request('projects', :get)
|
262
|
+
}.to raise_error { |error|
|
263
|
+
expect(error.error).to eq('ConnectionError')
|
264
|
+
expect(error.message).to eq('Could not connect to OptimizePlayer. Please check your internet connection and try again.')
|
265
|
+
expect(error).to be_a(OptimizePlayer::Errors::ConnectionError)
|
266
|
+
}
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
context 'timeout error' do
|
271
|
+
before do
|
272
|
+
allow(RestClient::Request).to receive(:execute).and_raise(RestClient::RequestTimeout)
|
273
|
+
end
|
274
|
+
|
275
|
+
it 'should raise OptimizePlayer connection error' do
|
276
|
+
expect {
|
277
|
+
subject.send_request('projects', :get)
|
278
|
+
}.to raise_error { |error|
|
279
|
+
expect(error.error).to eq('ConnectionError')
|
280
|
+
expect(error.message).to eq('Could not connect to OptimizePlayer. Please check your internet connection and try again.')
|
281
|
+
expect(error).to be_a(OptimizePlayer::Errors::ConnectionError)
|
282
|
+
}
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
context '405 error' do
|
287
|
+
before do
|
288
|
+
allow(RestClient::Request).to receive(:execute).and_raise(RestClient::MethodNotAllowed)
|
289
|
+
allow_any_instance_of(RestClient::MethodNotAllowed).to receive(:http_code).and_return(405)
|
290
|
+
# APi returne 405 method with empty body
|
291
|
+
allow_any_instance_of(RestClient::MethodNotAllowed).to receive(:http_body).and_return("")
|
292
|
+
end
|
293
|
+
|
294
|
+
it 'should raise OptimizePlayer 405 error' do
|
295
|
+
expect {
|
296
|
+
subject.send_request('projects', :get)
|
297
|
+
}.to raise_error { |error|
|
298
|
+
expect(error.error).to eq('MethodNotAllowed')
|
299
|
+
expect(error.message).to eq('Method Not Allowed')
|
300
|
+
expect(error).to be_a(OptimizePlayer::Errors::MethodNotAllowed)
|
301
|
+
}
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
305
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OptimizePlayer::Converter do
|
4
|
+
let(:proxy) { OptimizePlayer::Proxies::ProjectProxy.new(client) }
|
5
|
+
let(:client) { OptimizePlayer::Client.new('access_token', 'secret_key') }
|
6
|
+
|
7
|
+
context 'collection' do
|
8
|
+
let(:data) do
|
9
|
+
[
|
10
|
+
{
|
11
|
+
"object_class" => "Project",
|
12
|
+
"cid" => 'cid',
|
13
|
+
"title" => 'Project Title'
|
14
|
+
}
|
15
|
+
]
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'returns only one object in collection' do
|
19
|
+
result = described_class.convert_to_object(proxy, data)
|
20
|
+
expect(result.length).to eq(1)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'returns converted object' do
|
24
|
+
result = described_class.convert_to_object(proxy, data)
|
25
|
+
expect(result[0]).to be_a_kind_of(OptimizePlayer::Project)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns project title' do
|
29
|
+
result = described_class.convert_to_object(proxy, data)
|
30
|
+
expect(result[0].title).to eq('Project Title')
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should raise NoMethoderror' do
|
34
|
+
result = described_class.convert_to_object(proxy, data)
|
35
|
+
expect { result[0].name }.to raise_error(NoMethodError, /undefined method `name'/)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'object' do
|
40
|
+
let(:data) do
|
41
|
+
{
|
42
|
+
"object_class" => "Project",
|
43
|
+
"cid" => 'cid',
|
44
|
+
"title" => 'Project Title'
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'returns converted object' do
|
49
|
+
result = described_class.convert_to_object(proxy, data)
|
50
|
+
expect(result).to be_a_kind_of(OptimizePlayer::Project)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'returns project title' do
|
54
|
+
result = described_class.convert_to_object(proxy, data)
|
55
|
+
expect(result.title).to eq('Project Title')
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should raise NoMethoderror' do
|
59
|
+
result = described_class.convert_to_object(proxy, data)
|
60
|
+
expect { result.name }.to raise_error(NoMethodError, /undefined method `name'/)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/spec/proxy_spec.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe OptimizePlayer::Proxies::ProjectProxy do
|
4
|
+
subject { described_class.new(client) }
|
5
|
+
let(:client) { OptimizePlayer::Client.new('access_token', 'secret_key') }
|
6
|
+
|
7
|
+
before do
|
8
|
+
allow(OptimizePlayer::Converter).to receive(:convert_to_object)
|
9
|
+
allow(client).to receive(:send_request).and_return(response)
|
10
|
+
end
|
11
|
+
|
12
|
+
context '#all' do
|
13
|
+
let(:response) { [] }
|
14
|
+
|
15
|
+
it 'invokes send_request' do
|
16
|
+
expect(client).to receive(:send_request).with('projects', :get, {})
|
17
|
+
subject.all
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'invokes send_request with params' do
|
21
|
+
expect(client).to receive(:send_request).with('projects', :get, {:attr => 'value'})
|
22
|
+
subject.all(:attr => 'value')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'invokes convertation' do
|
26
|
+
expect(OptimizePlayer::Converter).to receive(:convert_to_object).with(subject, [])
|
27
|
+
subject.all
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context '#find' do
|
32
|
+
let(:response) { {} }
|
33
|
+
|
34
|
+
it 'invokes send_request' do
|
35
|
+
expect(client).to receive(:send_request).with('projects/1', :get)
|
36
|
+
subject.find(1)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'invokes convertation' do
|
40
|
+
expect(OptimizePlayer::Converter).to receive(:convert_to_object).with(subject, {})
|
41
|
+
subject.find(1)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context '#create' do
|
46
|
+
let(:response) { {} }
|
47
|
+
|
48
|
+
it 'invokes send_request with params' do
|
49
|
+
expect(client).to receive(:send_request).with('projects', :post, {:attr => 'value'})
|
50
|
+
subject.create(:attr => 'value')
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'invokes convertation' do
|
54
|
+
expect(OptimizePlayer::Converter).to receive(:convert_to_object).with(subject, {})
|
55
|
+
subject.create(:attr => 'value')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context '#move' do
|
60
|
+
let(:response) { {} }
|
61
|
+
|
62
|
+
it 'invokes send_request with params' do
|
63
|
+
expect(client).to receive(:send_request).with('projects/move', :post, {:attr => 'value'})
|
64
|
+
subject.move(:attr => 'value')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|