jeckle 0.4.0.beta2 → 0.4.0.beta3
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/jeckle/collection_response.rb +25 -0
- data/lib/jeckle/rest_actions.rb +7 -6
- data/lib/jeckle/version.rb +1 -1
- data/lib/jeckle.rb +4 -1
- data/spec/fixtures/resources/fake_resource.rb +4 -0
- data/spec/jeckle/rest_actions_spec.rb +13 -6
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: daea79214eac076d0f45217ccad97e299f0b8ed4
|
4
|
+
data.tar.gz: 815eb79a5058729ef025476a438cff1a5fc358c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7299c4462181501c834c7b33cfde8d06beca7ad21611c87a2b173070e2e9f864b3f01977045ee914cb54efe71c8c913e6fdce6021669c37735303144688ef17
|
7
|
+
data.tar.gz: 83388f41b76f585a801c13d7f4742237448f6982c44a5210abc5c0e3f37ba1a6172d74aa65dc1eefb82f0a7e3002337536c89961c309f0a0b78134efd31aff44
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'delegate'
|
2
|
+
|
3
|
+
module Jeckle
|
4
|
+
class CollectionResponse < SimpleDelegator
|
5
|
+
attr_reader :response, :collection
|
6
|
+
|
7
|
+
def initialize(collection, context: context, response: response)
|
8
|
+
@collection = Array(collection).map do |attributes|
|
9
|
+
context.new(attributes)
|
10
|
+
end
|
11
|
+
|
12
|
+
@response = response
|
13
|
+
|
14
|
+
super(@collection)
|
15
|
+
end
|
16
|
+
|
17
|
+
def body
|
18
|
+
@response.body
|
19
|
+
end
|
20
|
+
|
21
|
+
def headers
|
22
|
+
@response.headers
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/jeckle/rest_actions.rb
CHANGED
@@ -45,8 +45,8 @@ module Jeckle
|
|
45
45
|
# Post.find(1) # => posts/1
|
46
46
|
#
|
47
47
|
def find(id)
|
48
|
-
endpoint
|
49
|
-
response
|
48
|
+
endpoint = "#{resource_name}/#{id}"
|
49
|
+
response = run_request(endpoint).response.body
|
50
50
|
attributes = parse_response(response, member_root_name)
|
51
51
|
|
52
52
|
new(attributes)
|
@@ -62,10 +62,11 @@ module Jeckle
|
|
62
62
|
# Post.where({ status: 'published' }) # => posts/?status=published
|
63
63
|
#
|
64
64
|
def search(params = {})
|
65
|
-
|
66
|
-
|
65
|
+
request = run_request(resource_name, params)
|
66
|
+
response = request.response
|
67
|
+
collection = parse_response(response.body, collection_root_name)
|
67
68
|
|
68
|
-
|
69
|
+
CollectionResponse.new(collection, context: self, response: response)
|
69
70
|
end
|
70
71
|
alias :where :search
|
71
72
|
|
@@ -102,4 +103,4 @@ module Jeckle
|
|
102
103
|
end
|
103
104
|
end
|
104
105
|
end
|
105
|
-
end
|
106
|
+
end
|
data/lib/jeckle/version.rb
CHANGED
data/lib/jeckle.rb
CHANGED
@@ -5,7 +5,10 @@ require 'virtus'
|
|
5
5
|
|
6
6
|
require 'jeckle/version'
|
7
7
|
|
8
|
-
%w(
|
8
|
+
%w(
|
9
|
+
setup api model request http rest_actions
|
10
|
+
resource errors collection_response
|
11
|
+
).each do |file_name|
|
9
12
|
require "jeckle/#{file_name}"
|
10
13
|
end
|
11
14
|
|
@@ -2,7 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
RSpec.describe Jeckle::RESTActions do
|
4
4
|
let(:api) { FakeResource.api_mapping[:default_api] }
|
5
|
-
let(:
|
5
|
+
let(:response) { OpenStruct.new(body: body) }
|
6
|
+
let(:fake_request) { OpenStruct.new response: response }
|
6
7
|
|
7
8
|
describe '.root' do
|
8
9
|
context 'when collection is true' do
|
@@ -78,7 +79,7 @@ RSpec.describe Jeckle::RESTActions do
|
|
78
79
|
Post.find(1001)
|
79
80
|
end
|
80
81
|
|
81
|
-
it 'returns an instance of resource' do
|
82
|
+
it 'returns an instance of resource keeping the response' do
|
82
83
|
allow(Jeckle::Request).to receive(:run).and_return(fake_request)
|
83
84
|
|
84
85
|
expect(post).to be_an_instance_of(Post)
|
@@ -102,11 +103,14 @@ RSpec.describe Jeckle::RESTActions do
|
|
102
103
|
|
103
104
|
it 'returns an Array of resources' do
|
104
105
|
allow(Jeckle::Request).to receive(:run).and_return(fake_request)
|
106
|
+
fake_resources = FakeResource.search(query)
|
105
107
|
|
106
|
-
expect(
|
107
|
-
|
108
|
-
|
108
|
+
expect(fake_resources).to match [
|
109
|
+
FakeResource.new(id: 1001),
|
110
|
+
FakeResource.new(id: 1002)
|
109
111
|
]
|
112
|
+
|
113
|
+
expect(fake_resources.response).to be(response)
|
110
114
|
end
|
111
115
|
end
|
112
116
|
|
@@ -123,6 +127,7 @@ RSpec.describe Jeckle::RESTActions do
|
|
123
127
|
Post.new(id: 1001),
|
124
128
|
Post.new(id: 1002)
|
125
129
|
]
|
130
|
+
expect(results.response).to be(response)
|
126
131
|
end
|
127
132
|
end
|
128
133
|
|
@@ -131,8 +136,10 @@ RSpec.describe Jeckle::RESTActions do
|
|
131
136
|
|
132
137
|
it 'returns an empty Array' do
|
133
138
|
allow(Jeckle::Request).to receive(:run).and_return(fake_request)
|
139
|
+
results = FakeResource.search(query)
|
134
140
|
|
135
|
-
expect(
|
141
|
+
expect(results).to match []
|
142
|
+
expect(results.response).to be(response)
|
136
143
|
end
|
137
144
|
end
|
138
145
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jeckle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0.
|
4
|
+
version: 0.4.0.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas D'Stefano
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- jeckle.gemspec
|
144
144
|
- lib/jeckle.rb
|
145
145
|
- lib/jeckle/api.rb
|
146
|
+
- lib/jeckle/collection_response.rb
|
146
147
|
- lib/jeckle/errors.rb
|
147
148
|
- lib/jeckle/http.rb
|
148
149
|
- lib/jeckle/model.rb
|