braque 0.2.4 → 0.2.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 +4 -4
- data/lib/braque/model.rb +16 -9
- data/lib/braque/relations.rb +2 -2
- data/lib/braque/version.rb +2 -1
- data/spec/braque/custom_name_spec.rb +4 -4
- data/spec/braque/model_spec.rb +62 -60
- data/spec/braque/relations_spec.rb +8 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d97d923b573d2def2987c0ec50a13a75b8c77e49
|
4
|
+
data.tar.gz: 5e513a8caf7f12bdf7e45514c63b55cbe77d17e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6a40517912ec7286e1fb661fe2c61b74f08771a1783a1ad0aa0ad27e0e1381bfca856b89310abad52befa384263160b45464c6715b35d1ba9d03ab99c7ec4b2
|
7
|
+
data.tar.gz: 15fbd1640334032b276b2cd5d2910437a125d8d4400c59f5e86092f18ce607bf4483caaeb7471672a0b604fc3bd2f14ad021d9f616262dc259c8fea4548b49f7
|
data/lib/braque/model.rb
CHANGED
@@ -7,6 +7,13 @@ module Braque
|
|
7
7
|
class_attribute :config
|
8
8
|
self.config = {}
|
9
9
|
|
10
|
+
# NOTE: Initialize with the Hyperclient resource's _attributes if present.
|
11
|
+
# Fallback to permit assigning attributes via a simple hash.
|
12
|
+
def initialize(response = nil, options = {})
|
13
|
+
attributes = response.respond_to?(:_attributes) ? response._attributes : response
|
14
|
+
super(attributes, options)
|
15
|
+
end
|
16
|
+
|
10
17
|
# NOTE: This assumes that the related API uses an ID attribute to
|
11
18
|
# define the resource. Rails will use this field to construct
|
12
19
|
# resource routes in client applications.
|
@@ -15,7 +22,7 @@ module Braque
|
|
15
22
|
# in client apps if some other scheme is more advisable.
|
16
23
|
#
|
17
24
|
def to_param
|
18
|
-
|
25
|
+
raise 'Please overide to_param or add ID to your model attributes.' unless attributes.include? 'id'
|
19
26
|
id.to_s
|
20
27
|
end
|
21
28
|
|
@@ -27,13 +34,13 @@ module Braque
|
|
27
34
|
# classes in client apps if some other scheme is more advisable.
|
28
35
|
#
|
29
36
|
def resource_find_options
|
30
|
-
|
37
|
+
raise 'Please overide resource_find_options or add ID to your model attributes.' unless attributes.include? 'id'
|
31
38
|
{ id: id }
|
32
39
|
end
|
33
40
|
|
34
41
|
def save(params = {})
|
35
42
|
response = self.class.client.method(self.class.instance_method_name).call(resource_find_options)
|
36
|
-
|
43
|
+
._patch(self.class.instance_method_name.to_s => params)
|
37
44
|
self.class.new response
|
38
45
|
end
|
39
46
|
|
@@ -99,11 +106,11 @@ module Braque
|
|
99
106
|
|
100
107
|
def create(resource_params = {}, options = {})
|
101
108
|
response = client.method(collection_method_name)
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
109
|
+
.call
|
110
|
+
._post(
|
111
|
+
{ instance_method_name.to_s => resource_params }
|
112
|
+
.merge(options)
|
113
|
+
)
|
107
114
|
new response
|
108
115
|
end
|
109
116
|
|
@@ -116,7 +123,7 @@ module Braque
|
|
116
123
|
end
|
117
124
|
|
118
125
|
def client
|
119
|
-
|
126
|
+
raise 'Please define api_root for all Braque::Model classes' unless config[:api_root_url]
|
120
127
|
Hyperclient.new(config[:api_root_url]) do |client|
|
121
128
|
client.headers['Http-Authorization'] = config[:http_authorization_header] if config[:http_authorization_header]
|
122
129
|
client.headers['Authorization'] = config[:authorization_header] if config[:authorization_header]
|
data/lib/braque/relations.rb
CHANGED
@@ -14,8 +14,8 @@ module Braque
|
|
14
14
|
def has_many(relation)
|
15
15
|
define_method relation do |params = {}|
|
16
16
|
response = self.class.client.method(self.class.instance_method_name)
|
17
|
-
|
18
|
-
|
17
|
+
.call(resource_find_options)
|
18
|
+
.method(relation).call(params)
|
19
19
|
Braque::Collection::LinkedArray.new(
|
20
20
|
response,
|
21
21
|
relation.to_s.classify.singularize.constantize
|
data/lib/braque/version.rb
CHANGED
@@ -12,17 +12,17 @@ RSpec.describe Braque::Model, type: :model do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
let(:root_response) { JSON.parse(File.read
|
16
|
-
let(:breeze_response) { JSON.parse(File.read
|
15
|
+
let(:root_response) { JSON.parse(File.read('spec/fixtures/root.json')) }
|
16
|
+
let(:breeze_response) { JSON.parse(File.read('spec/fixtures/resource.json')) }
|
17
17
|
|
18
18
|
let(:root_request) do
|
19
19
|
WebMock.stub_request(:get, "#{OceanBreeze.config[:api_root_url]}/")
|
20
|
-
|
20
|
+
.to_return(status: 200, body: root_response)
|
21
21
|
end
|
22
22
|
|
23
23
|
let(:breeze_request) do
|
24
24
|
WebMock.stub_request(:get, "#{OceanBreeze.config[:api_root_url]}/breezes/1")
|
25
|
-
|
25
|
+
.to_return(status: 200, body: breeze_response)
|
26
26
|
end
|
27
27
|
|
28
28
|
let(:ocean_breeze) { OceanBreeze.new id: 1 }
|
data/spec/braque/model_spec.rb
CHANGED
@@ -14,23 +14,25 @@ RSpec.describe Braque::Model, type: :model do
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
let(:root_response) { JSON.parse(File.read
|
18
|
-
let(:root_response_with_token_resource_path)
|
19
|
-
|
20
|
-
|
17
|
+
let(:root_response) { JSON.parse(File.read('spec/fixtures/root.json')) }
|
18
|
+
let(:root_response_with_token_resource_path) do
|
19
|
+
JSON.parse(File.read('spec/fixtures/root_with_token_resource_path.json'))
|
20
|
+
end
|
21
|
+
let(:collection_response) { JSON.parse(File.read('spec/fixtures/collection.json')) }
|
22
|
+
let(:resource_response) { JSON.parse(File.read('spec/fixtures/resource.json')) }
|
21
23
|
|
22
24
|
let(:root_request) do
|
23
25
|
WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/")
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
27
|
+
'Accept' => Breeze.config[:accept_header] })
|
28
|
+
.to_return(status: 200, body: root_response)
|
27
29
|
end
|
28
30
|
|
29
31
|
let(:root_request_with_token_resource_path) do
|
30
32
|
WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/")
|
31
|
-
|
32
|
-
|
33
|
-
|
33
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
34
|
+
'Accept' => Breeze.config[:accept_header] })
|
35
|
+
.to_return(status: 200, body: root_response_with_token_resource_path)
|
34
36
|
end
|
35
37
|
|
36
38
|
context 'class methods' do
|
@@ -51,9 +53,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
51
53
|
before do
|
52
54
|
root_request
|
53
55
|
@collection_request = WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/breezes")
|
54
|
-
|
55
|
-
|
56
|
-
|
56
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
57
|
+
'Accept' => Breeze.config[:accept_header] })
|
58
|
+
.to_return(status: 200, body: collection_response)
|
57
59
|
@breezes = Breeze.list
|
58
60
|
end
|
59
61
|
it 'performs the API root request' do
|
@@ -84,9 +86,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
84
86
|
before do
|
85
87
|
root_request
|
86
88
|
@collection_request = WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/breezes")
|
87
|
-
|
88
|
-
|
89
|
-
|
89
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
90
|
+
'Accept' => Breeze.config[:accept_header] })
|
91
|
+
.to_return(status: 500)
|
90
92
|
end
|
91
93
|
it 'returns a Faraday::ClientError error' do
|
92
94
|
expect do
|
@@ -100,10 +102,10 @@ RSpec.describe Braque::Model, type: :model do
|
|
100
102
|
before do
|
101
103
|
root_request
|
102
104
|
@collection_request = WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/breezes")
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
105
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
106
|
+
'Accept' => Breeze.config[:accept_header] })
|
107
|
+
.with(query: 'ids%5B0%5D=1&ids%5B1%5D=2')
|
108
|
+
.to_return(status: 200, body: collection_response)
|
107
109
|
@breezes = Breeze.list('ids[]' => [1, 2])
|
108
110
|
end
|
109
111
|
it 'performs the collection request with converted array params' do
|
@@ -117,9 +119,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
117
119
|
before do
|
118
120
|
root_request
|
119
121
|
@resource_request = WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/breezes/1")
|
120
|
-
|
121
|
-
|
122
|
-
|
122
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
123
|
+
'Accept' => Breeze.config[:accept_header] })
|
124
|
+
.to_return(status: 200, body: resource_response)
|
123
125
|
@breeze = Breeze.find(id: 1)
|
124
126
|
end
|
125
127
|
it 'performs the API root request' do
|
@@ -140,9 +142,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
140
142
|
before do
|
141
143
|
root_request
|
142
144
|
@resource_request = WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/breezes/1")
|
143
|
-
|
144
|
-
|
145
|
-
|
145
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
146
|
+
'Accept' => Breeze.config[:accept_header] })
|
147
|
+
.to_return(status: 500)
|
146
148
|
end
|
147
149
|
it 'returns a Faraday::ClientError error' do
|
148
150
|
expect do
|
@@ -163,9 +165,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
163
165
|
|
164
166
|
root_request_with_token_resource_path
|
165
167
|
@resource_request = WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/breezes/1?token=123")
|
166
|
-
|
167
|
-
|
168
|
-
|
168
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
169
|
+
'Accept' => Breeze.config[:accept_header] })
|
170
|
+
.to_return(status: 200, body: resource_response)
|
169
171
|
@breeze = Breeze.find(id: 1, token: 123)
|
170
172
|
end
|
171
173
|
|
@@ -191,9 +193,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
191
193
|
before do
|
192
194
|
root_request
|
193
195
|
@create_request = WebMock.stub_request(:post, "#{Breeze.config[:api_root_url]}/breezes")
|
194
|
-
|
195
|
-
|
196
|
-
|
196
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
197
|
+
'Accept' => Breeze.config[:accept_header] })
|
198
|
+
.to_return(status: 201, body: resource_response)
|
197
199
|
@params = { title: 'What a nice breeze.' }
|
198
200
|
@breeze = Breeze.create(@params)
|
199
201
|
end
|
@@ -217,12 +219,12 @@ RSpec.describe Braque::Model, type: :model do
|
|
217
219
|
@params = { title: 'What a nice breeze.' }
|
218
220
|
@subdomain = 'breezey'
|
219
221
|
@create_request = WebMock.stub_request(:post, "#{Breeze.config[:api_root_url]}/breezes")
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
222
|
+
.with(headers: {
|
223
|
+
'Http-Authorization' => Breeze.config[:http_authorization_header],
|
224
|
+
'Accept' => Breeze.config[:accept_header]
|
225
|
+
})
|
226
|
+
.with(body: '{"breeze":{"title":"What a nice breeze."},"subdomain":"breezey"}')
|
227
|
+
.to_return(status: 201, body: resource_response)
|
226
228
|
@breeze = Breeze.create(@params, subdomain: @subdomain)
|
227
229
|
end
|
228
230
|
it 'performs the API root request' do
|
@@ -245,10 +247,10 @@ RSpec.describe Braque::Model, type: :model do
|
|
245
247
|
before do
|
246
248
|
root_request
|
247
249
|
@create_request = WebMock.stub_request(:post, "#{Breeze.config[:api_root_url]}/breezes")
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
250
|
+
.with(headers: {
|
251
|
+
'Http-Authorization' => Breeze.config[:http_authorization_header],
|
252
|
+
'Accept' => Breeze.config[:accept_header]
|
253
|
+
}).to_return(status: 500)
|
252
254
|
end
|
253
255
|
it 'returns a Faraday::ClientError error' do
|
254
256
|
expect do
|
@@ -269,9 +271,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
269
271
|
before do
|
270
272
|
root_request
|
271
273
|
@save_request = WebMock.stub_request(:patch, "#{Breeze.config[:api_root_url]}/breezes/1")
|
272
|
-
|
273
|
-
|
274
|
-
|
274
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
275
|
+
'Accept' => Breeze.config[:accept_header] })
|
276
|
+
.to_return(status: 200, body: resource_response)
|
275
277
|
@params = { title: 'What a nice breeze.' }
|
276
278
|
@breeze = Breeze.new(id: 1).save(@params)
|
277
279
|
end
|
@@ -294,9 +296,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
294
296
|
before do
|
295
297
|
root_request
|
296
298
|
@save_request = WebMock.stub_request(:patch, "#{Breeze.config[:api_root_url]}/breezes/1")
|
297
|
-
|
298
|
-
|
299
|
-
|
299
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
300
|
+
'Accept' => Breeze.config[:accept_header] })
|
301
|
+
.to_return(status: 500)
|
300
302
|
end
|
301
303
|
it 'returns a Faraday::ClientError error' do
|
302
304
|
expect do
|
@@ -317,9 +319,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
317
319
|
|
318
320
|
root_request_with_token_resource_path
|
319
321
|
@save_request = WebMock.stub_request(:patch, "#{Breeze.config[:api_root_url]}/breezes/1?token=123")
|
320
|
-
|
321
|
-
|
322
|
-
|
322
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
323
|
+
'Accept' => Breeze.config[:accept_header] })
|
324
|
+
.to_return(status: 200, body: resource_response)
|
323
325
|
@params = { title: 'What a nice breeze.' }
|
324
326
|
@breeze = Breeze.new(id: 1, token: 123).save(@params)
|
325
327
|
end
|
@@ -348,9 +350,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
348
350
|
before do
|
349
351
|
root_request
|
350
352
|
@destroy_request = WebMock.stub_request(:delete, "#{Breeze.config[:api_root_url]}/breezes/1")
|
351
|
-
|
352
|
-
|
353
|
-
|
353
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
354
|
+
'Accept' => Breeze.config[:accept_header] })
|
355
|
+
.to_return(status: 200)
|
354
356
|
@breeze = Breeze.new(id: 1).destroy
|
355
357
|
end
|
356
358
|
it 'performs the API root request' do
|
@@ -365,9 +367,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
365
367
|
before do
|
366
368
|
root_request
|
367
369
|
@destroy_request = WebMock.stub_request(:delete, "#{Breeze.config[:api_root_url]}/breezes/1")
|
368
|
-
|
369
|
-
|
370
|
-
|
370
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
371
|
+
'Accept' => Breeze.config[:accept_header] })
|
372
|
+
.to_return(status: 500)
|
371
373
|
end
|
372
374
|
it 'returns a Faraday::ClientError error' do
|
373
375
|
expect do
|
@@ -388,9 +390,9 @@ RSpec.describe Braque::Model, type: :model do
|
|
388
390
|
|
389
391
|
root_request_with_token_resource_path
|
390
392
|
@destroy_request = WebMock.stub_request(:delete, "#{Breeze.config[:api_root_url]}/breezes/1?token=123")
|
391
|
-
|
392
|
-
|
393
|
-
|
393
|
+
.with(headers: { 'Http-Authorization' => Breeze.config[:http_authorization_header],
|
394
|
+
'Accept' => Breeze.config[:accept_header] })
|
395
|
+
.to_return(status: 200)
|
394
396
|
@breeze = Breeze.new(id: 1, token: 123).destroy
|
395
397
|
end
|
396
398
|
it 'performs the API root request' do
|
@@ -20,29 +20,29 @@ RSpec.describe Braque::Relations, type: :model do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
let(:root_response) { JSON.parse(File.read
|
24
|
-
let(:breeze_response) { JSON.parse(File.read
|
25
|
-
let(:tide_response) { JSON.parse(File.read
|
26
|
-
let(:tides_response) { JSON.parse(File.read
|
23
|
+
let(:root_response) { JSON.parse(File.read('spec/fixtures/root.json')) }
|
24
|
+
let(:breeze_response) { JSON.parse(File.read('spec/fixtures/resource.json')) }
|
25
|
+
let(:tide_response) { JSON.parse(File.read('spec/fixtures/associated_resource.json')) }
|
26
|
+
let(:tides_response) { JSON.parse(File.read('spec/fixtures/associated_collection.json')) }
|
27
27
|
|
28
28
|
let(:root_request) do
|
29
29
|
WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/")
|
30
|
-
|
30
|
+
.to_return(status: 200, body: root_response)
|
31
31
|
end
|
32
32
|
|
33
33
|
let(:breeze_request) do
|
34
34
|
WebMock.stub_request(:get, "#{Breeze.config[:api_root_url]}/breezes/1")
|
35
|
-
|
35
|
+
.to_return(status: 200, body: breeze_response)
|
36
36
|
end
|
37
37
|
|
38
38
|
let(:tide_request) do
|
39
39
|
WebMock.stub_request(:get, "#{Tide.config[:api_root_url]}/tides/1")
|
40
|
-
|
40
|
+
.to_return(status: 200, body: tide_response)
|
41
41
|
end
|
42
42
|
|
43
43
|
let(:tides_request) do
|
44
44
|
WebMock.stub_request(:get, "#{Tide.config[:api_root_url]}/tides?account_id=1")
|
45
|
-
|
45
|
+
.to_return(status: 200, body: tides_response)
|
46
46
|
end
|
47
47
|
|
48
48
|
let(:breeze) { Breeze.new id: 1 }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: braque
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dylan Fareed
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hyperclient
|