vend 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/vend/base.rb +11 -0
- data/lib/vend/resource/register_sale.rb +4 -0
- data/lib/vend/resource_collection.rb +1 -1
- data/lib/vend/version.rb +1 -1
- data/spec/integration/register_sale_spec.rb +3 -1
- data/spec/support/shared_examples/integration.rb +8 -2
- data/spec/vend/base_spec.rb +5 -0
- data/spec/vend/resource_collection_spec.rb +12 -2
- metadata +4 -4
data/lib/vend/base.rb
CHANGED
@@ -147,6 +147,17 @@ module Vend
|
|
147
147
|
false
|
148
148
|
end
|
149
149
|
|
150
|
+
# Override this with arguments that are required on every collection
|
151
|
+
# request. I.e, to default to 500 items per page:
|
152
|
+
#
|
153
|
+
# def default_collection_request_args
|
154
|
+
# super.merge(:url_params => {:page_size => 500})
|
155
|
+
# end
|
156
|
+
#
|
157
|
+
def self.default_collection_request_args
|
158
|
+
{}
|
159
|
+
end
|
160
|
+
|
150
161
|
# Overrides respond_to? to query the attrs hash for the key before
|
151
162
|
# proxying it to the object
|
152
163
|
def respond_to?(method_name)
|
data/lib/vend/version.rb
CHANGED
@@ -19,7 +19,9 @@ describe Vend::Resource::RegisterSale do
|
|
19
19
|
let(:expected_collection_length) { 1 }
|
20
20
|
|
21
21
|
it_should_behave_like "a resource with a singular GET endpoint"
|
22
|
-
it_should_behave_like "a resource with a collection GET endpoint"
|
22
|
+
it_should_behave_like "a resource with a collection GET endpoint" do
|
23
|
+
let(:append_to_url) { '?page_size=200' }
|
24
|
+
end
|
23
25
|
|
24
26
|
specify "register_sales are findable by state" do
|
25
27
|
client.RegisterSale.should respond_to(:find_by_state)
|
@@ -22,14 +22,20 @@ shared_examples "a resource with a collection GET endpoint" do
|
|
22
22
|
let(:username) {"foo"}
|
23
23
|
let(:password) {"bar"}
|
24
24
|
let(:store) {"baz"}
|
25
|
+
let(:append_to_url) { '' }
|
25
26
|
|
26
27
|
let(:client) do
|
27
28
|
Vend::Client.new(store, username, password)
|
28
29
|
end
|
29
30
|
|
30
31
|
it "gets the collection" do
|
31
|
-
|
32
|
-
|
32
|
+
url = "https://%s:%s@%s.vendhq.com/api/%s%s" % [
|
33
|
+
username, password, store, class_basename.to_s.underscore.pluralize,
|
34
|
+
append_to_url
|
35
|
+
]
|
36
|
+
stub_request(:get, url).to_return(
|
37
|
+
:status => 200, :body => get_mock_from_path(:get)
|
38
|
+
)
|
33
39
|
|
34
40
|
collection = build_receiver.all
|
35
41
|
collection.count.should == expected_collection_length
|
data/spec/vend/base_spec.rb
CHANGED
@@ -270,6 +270,11 @@ describe Vend::Base do
|
|
270
270
|
|
271
271
|
end
|
272
272
|
|
273
|
+
describe '.default_collection_request_args' do
|
274
|
+
subject { Vend::Resource::Foo }
|
275
|
+
its(:default_collection_request_args) { should == {} }
|
276
|
+
end
|
277
|
+
|
273
278
|
describe ".paginates?" do
|
274
279
|
|
275
280
|
subject { Vend::Resource::Foo }
|
@@ -3,9 +3,11 @@ require 'spec_helper'
|
|
3
3
|
describe Vend::ResourceCollection do
|
4
4
|
|
5
5
|
let(:client) { mock("client") }
|
6
|
-
let(:target_class) {
|
6
|
+
let(:target_class) {
|
7
|
+
mock("target_class", :default_collection_request_args => {})
|
8
|
+
}
|
7
9
|
let(:endpoint) { "endpoint" }
|
8
|
-
let(:request_args) {
|
10
|
+
let(:request_args) { {} }
|
9
11
|
|
10
12
|
subject { described_class.new(client, target_class, endpoint, request_args) }
|
11
13
|
|
@@ -25,6 +27,14 @@ describe Vend::ResourceCollection do
|
|
25
27
|
its(:request_args) { should == {} }
|
26
28
|
end
|
27
29
|
|
30
|
+
context "when target class has default request args" do
|
31
|
+
subject {
|
32
|
+
described_class.new(client, target_class, endpoint)
|
33
|
+
}
|
34
|
+
before { target_class.stub(:default_collection_request_args => {:foo => :bar}) }
|
35
|
+
its(:request_args) { should == {:foo => :bar}}
|
36
|
+
end
|
37
|
+
|
28
38
|
end
|
29
39
|
|
30
40
|
describe "#each" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vend
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -160,7 +160,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
160
|
version: '0'
|
161
161
|
segments:
|
162
162
|
- 0
|
163
|
-
hash:
|
163
|
+
hash: 2360460495322174527
|
164
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
165
|
none: false
|
166
166
|
requirements:
|
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
169
|
version: '0'
|
170
170
|
segments:
|
171
171
|
- 0
|
172
|
-
hash:
|
172
|
+
hash: 2360460495322174527
|
173
173
|
requirements: []
|
174
174
|
rubyforge_project: vend
|
175
175
|
rubygems_version: 1.8.24
|