shutl_resource 0.9.4 → 0.10.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.
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/lib/shutl/resource/rest_class_methods.rb +13 -0
- data/lib/shutl/resource/version.rb +1 -1
- data/spec/rest_resource_spec.rb +26 -2
- metadata +7 -6
- data/.rbenv-version +0 -1
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
shutl_resource
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.9.3-p429
|
@@ -81,6 +81,11 @@ module Shutl::Resource
|
|
81
81
|
response_object = response.parsed_response[@resource_name.pluralize].map do |h|
|
82
82
|
new_object(args.merge(h), response)
|
83
83
|
end
|
84
|
+
if order_collection?
|
85
|
+
response_object.sort! do |a,b|
|
86
|
+
a.send(@order_collection_by) <=> b.send(@order_collection_by)
|
87
|
+
end
|
88
|
+
end
|
84
89
|
RestCollection.new(response_object, response.parsed_response['pagination'])
|
85
90
|
end
|
86
91
|
|
@@ -139,6 +144,10 @@ module Shutl::Resource
|
|
139
144
|
@remote_resource_url = url
|
140
145
|
end
|
141
146
|
|
147
|
+
def order_collection_by(field)
|
148
|
+
@order_collection_by = field
|
149
|
+
end
|
150
|
+
|
142
151
|
def convert_new_id attributes
|
143
152
|
if attributes[:new_id]
|
144
153
|
attributes = attributes.clone.tap { |h| h[:id] = h[:new_id]; h.delete(:new_id) }
|
@@ -255,6 +264,10 @@ module Shutl::Resource
|
|
255
264
|
url
|
256
265
|
end
|
257
266
|
|
267
|
+
def order_collection?
|
268
|
+
!!@order_collection_by
|
269
|
+
end
|
270
|
+
|
258
271
|
private
|
259
272
|
def replace_args_from_pattern! args, url
|
260
273
|
args = args.reject! do |key, value|
|
data/spec/rest_resource_spec.rb
CHANGED
@@ -109,11 +109,14 @@ describe Shutl::Resource::Rest do
|
|
109
109
|
describe '#all' do
|
110
110
|
|
111
111
|
context 'with no arguments' do
|
112
|
-
|
113
|
-
|
112
|
+
let(:body) do
|
113
|
+
'{
|
114
114
|
"test_rests": [{ "a": "a", "b": 2 }],
|
115
115
|
"pagination":{"page": 0,"items_on_page": 1,"total_count": 3, "number_of_pages": 3}
|
116
116
|
}'
|
117
|
+
end
|
118
|
+
|
119
|
+
before do
|
117
120
|
@request = stub_request(:get, 'http://host/test_rests').
|
118
121
|
to_return(:status => 200, :body => body, :headers => headers)
|
119
122
|
end
|
@@ -152,6 +155,27 @@ describe Shutl::Resource::Rest do
|
|
152
155
|
lambda { TestRest.all }.should raise_error(Shutl::ForbiddenAccess)
|
153
156
|
|
154
157
|
end
|
158
|
+
|
159
|
+
context 'ordering the collection' do
|
160
|
+
let(:body) do
|
161
|
+
'{
|
162
|
+
"test_rests": [{ "name": "d" }, {"name": "e"}, {"name": "a"}],
|
163
|
+
"pagination":{"page": 0,"items_on_page": 1,"total_count": 3, "number_of_pages": 3}
|
164
|
+
}'
|
165
|
+
end
|
166
|
+
|
167
|
+
before do
|
168
|
+
TestRest.order_collection_by :name
|
169
|
+
end
|
170
|
+
|
171
|
+
after do
|
172
|
+
TestRest.instance_variable_set(:@order_collection_by, nil)
|
173
|
+
end
|
174
|
+
|
175
|
+
it 're-orders the result' do
|
176
|
+
TestRest.all.map(&:name).should == %w(a d e)
|
177
|
+
end
|
178
|
+
end
|
155
179
|
end
|
156
180
|
|
157
181
|
context 'with no arguments' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shutl_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-
|
14
|
+
date: 2013-07-04 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: httparty
|
@@ -135,8 +135,9 @@ extensions: []
|
|
135
135
|
extra_rdoc_files: []
|
136
136
|
files:
|
137
137
|
- .gitignore
|
138
|
-
- .rbenv-version
|
139
138
|
- .rspec
|
139
|
+
- .ruby-gemset
|
140
|
+
- .ruby-version
|
140
141
|
- .travis.yml
|
141
142
|
- Gemfile
|
142
143
|
- LICENSE
|
@@ -171,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
171
172
|
version: '0'
|
172
173
|
segments:
|
173
174
|
- 0
|
174
|
-
hash:
|
175
|
+
hash: -1118351529069476530
|
175
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
177
|
none: false
|
177
178
|
requirements:
|
@@ -180,10 +181,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
181
|
version: '0'
|
181
182
|
segments:
|
182
183
|
- 0
|
183
|
-
hash:
|
184
|
+
hash: -1118351529069476530
|
184
185
|
requirements: []
|
185
186
|
rubyforge_project:
|
186
|
-
rubygems_version: 1.8.
|
187
|
+
rubygems_version: 1.8.23
|
187
188
|
signing_key:
|
188
189
|
specification_version: 3
|
189
190
|
summary: Manage Shutl Rest resource. Parse/Serialize JSON
|
data/.rbenv-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.9.3-p327-perf
|