springboard-retail 4.2.0 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13eaf04ac55ef152f9c444f235656ad9899634d173aff26f6d87d287d9c07b94
4
- data.tar.gz: ec8edecf083f85ce0750ba307080a00044daff4020acd8defd2ef6ce50ea45f2
3
+ metadata.gz: 75887540f522a54dbca3eb013bffa99780b96d17846797c8072963c2567ebf89
4
+ data.tar.gz: 9b72a1e965fedce2afd7c25da5a68e85b2caf587916fbccda22f0e9a3dbe1a99
5
5
  SHA512:
6
- metadata.gz: 158b90cf3fe6e854ec8aaa1ca77d503e7b43e3ce7aa106ad832bb5e85e3b6cde8712f6981d6f49827605d1fa636ed7dfb271edd32de805dac2deeac10412bf6d
7
- data.tar.gz: 00e9ce7b716561a0994c06e2f8c78159f68346999f063cad57f9fb11ab2e1e5a1b66cef00849a5ee34950156ee81d1c6b37c287988783ba7a73cc2fcb7991d3a
6
+ metadata.gz: a06be6e7ecf83216be6d5200b0044615719e7605911f5c1bf3f1ccf76b8bdf9a7480ae334028254ba49d50134e43ba7c858f5769b6fadde6fa4a9b27a5458121
7
+ data.tar.gz: 4095a672bdeb383b19cffb6657137456e8dc8801255e7f43548ef0db9a2c3db01491f666d5508dd79e9b6275715b250cb13a683d1cbce812b966bc7fa616b5ad
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- springboard-retail (4.2.0)
4
+ springboard-retail (4.2.1)
5
5
  addressable (~> 2.2.8)
6
6
  hashie
7
7
  json (>= 1.7.4)
data/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![Build Status](https://travis-ci.org/springboardretail/springboard-client-ruby.png?branch=master)](https://travis-ci.org/springboardretail/springboard-client-ruby)
5
5
  [![Code Climate](https://codeclimate.com/github/springboardretail/springboard-client-ruby.png)](https://codeclimate.com/github/springboardretail/springboard-client-ruby)
6
6
  [![Coverage Status](https://coveralls.io/repos/github/springboardretail/springboard-client-ruby/badge.svg?branch=master)](https://coveralls.io/github/springboardretail/springboard-client-ruby?branch=master)
7
- [![Dependency Status](https://gemnasium.com/springboardretail/springboard-client-ruby.png)](https://gemnasium.com/springboardretail/springboard-client-ruby)
8
7
 
9
8
  This is the [Springboard Retail](http://springboardretail.com/) (a point-of-sale/retail management system) client library for Ruby. It provides access to the Springboard Retail HTTP API.
10
9
 
@@ -10,7 +10,7 @@ module Springboard
10
10
  #
11
11
  # @return [URI]
12
12
  def self.parse(value)
13
- return value if value.is_a?(self)
13
+ return value.dup if value.is_a?(self)
14
14
  new(::Addressable::URI.parse(value))
15
15
  end
16
16
 
@@ -30,6 +30,14 @@ module Springboard
30
30
  @uri = uri
31
31
  end
32
32
 
33
+ ##
34
+ # Clones the URI object
35
+ #
36
+ # @return [URI]
37
+ def dup
38
+ self.class.new(@uri.dup)
39
+ end
40
+
33
41
  ##
34
42
  # Returns a new URI with the given subpath appended to it. Ensures a single
35
43
  # forward slash between the URI's path and the given subpath.
@@ -48,6 +48,12 @@ describe Springboard::Client::Resource do
48
48
  it "should add bracket notation for array parameters" do
49
49
  expect(resource.__send__(method, :somearray => [1, 2, 3]).uri.to_s).to eq("/some/path?somearray[]=1&somearray[]=2&somearray[]=3")
50
50
  end
51
+
52
+ it "should return a new resource without modifying the existing URI" do
53
+ new_resource = resource.query(per_page: 1)
54
+ expect(new_resource.uri.to_s).to eq("/some/path?per_page=1")
55
+ expect(resource.uri.to_s).to eq("/some/path")
56
+ end
51
57
  end
52
58
 
53
59
  describe "when called without arguments" do
@@ -107,7 +113,7 @@ describe Springboard::Client::Resource do
107
113
  end
108
114
  end
109
115
 
110
- %w{count each each_page}.each do |method|
116
+ %w{each each_page}.each do |method|
111
117
  describe method do
112
118
  it "should call the client's #{method} method with the resource's URI" do
113
119
  expect(client).to receive(method).with(resource.uri)
@@ -134,6 +140,37 @@ describe Springboard::Client::Resource do
134
140
  end
135
141
  end
136
142
 
143
+ describe "count" do
144
+ let(:response_data) {
145
+ {
146
+ :status => 200,
147
+ :body => {total: 123}.to_json
148
+ }
149
+ }
150
+
151
+ it "should call the client's count method with the resource's URI" do
152
+ expect(client).to receive(:count).with(resource.uri)
153
+ resource.count
154
+ end
155
+
156
+ it "should set the per_page query string param to 1" do
157
+ request_stub = stub_request(:get, "#{base_url}/some/path?page=1&per_page=1").to_return(response_data)
158
+ resource.count
159
+ expect(request_stub).to have_been_requested
160
+ end
161
+
162
+ it "should return the resource count" do
163
+ request_stub = stub_request(:get, "#{base_url}/some/path?page=1&per_page=1").to_return(response_data)
164
+ expect(resource.count).to eq(123)
165
+ end
166
+
167
+ it "should not modify the original resource URI" do
168
+ request_stub = stub_request(:get, "#{base_url}/some/path?page=1&per_page=1").to_return(response_data)
169
+ resource.count
170
+ expect(resource.uri.to_s).to eq("/some/path")
171
+ end
172
+ end
173
+
137
174
  describe "first" do
138
175
  let(:response_data) {
139
176
  {
@@ -152,6 +189,12 @@ describe Springboard::Client::Resource do
152
189
  request_stub = stub_request(:get, "#{base_url}/some/path?page=1&per_page=1").to_return(response_data)
153
190
  expect(resource.first).to eq({"id" => "Me first!"})
154
191
  end
192
+
193
+ it "should not modify the original resource URI" do
194
+ request_stub = stub_request(:get, "#{base_url}/some/path?page=1&per_page=1").to_return(response_data)
195
+ resource.first
196
+ expect(resource.uri.to_s).to eq("/some/path")
197
+ end
155
198
  end
156
199
 
157
200
  describe "embed" do
@@ -12,10 +12,39 @@ describe Springboard::Client::URI do
12
12
  end
13
13
 
14
14
  describe "parse" do
15
- it "should return a URI based on the given string" do
16
- uri = described_class.parse('/some_path')
17
- expect(uri).to be_a(described_class)
18
- expect(uri.to_s).to eq('/some_path')
15
+ describe "when called with a URI object" do
16
+ it "should return a cloned URI object" do
17
+ parsed_uri = described_class.parse(uri)
18
+ expect(uri.class).to eq(parsed_uri.class)
19
+ expect(uri.object_id).not_to eq(parsed_uri.object_id)
20
+ expect(parsed_uri.to_s).to eq(uri.to_s)
21
+ end
22
+ end
23
+
24
+ describe "when called with a URI string" do
25
+ it "should return a URI based on the given string" do
26
+ uri = described_class.parse('/some_path')
27
+ expect(uri).to be_a(described_class)
28
+ expect(uri.to_s).to eq('/some_path')
29
+ end
30
+ end
31
+ end
32
+
33
+ describe "dup" do
34
+ it "should return a duplicate URI object" do
35
+ dup_uri = uri.dup
36
+ expect(uri.class).to eq(dup_uri.class)
37
+ expect(uri.to_s).to eq(dup_uri.to_s)
38
+ expect(uri.object_id).not_to eq(dup_uri.object_id)
39
+ end
40
+
41
+ describe "when mutating the copy" do
42
+ it "should not affect the original" do
43
+ dup_uri = uri.dup
44
+ dup_uri.query_values = {per_page: 1}
45
+ expect(uri.to_s).to eq('/relative/path')
46
+ expect(dup_uri.to_s).to eq('/relative/path?per_page=1')
47
+ end
19
48
  end
20
49
  end
21
50
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'springboard-retail'
3
- s.version = '4.2.0'
3
+ s.version = '4.2.1'
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.authors = ['Jay Stotz']
6
6
  s.summary = 'Springboard Retail API client library'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: springboard-retail
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Stotz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-25 00:00:00.000000000 Z
11
+ date: 2018-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: patron
@@ -104,8 +104,8 @@ files:
104
104
  - vendor/cache/crack-0.4.2.gem
105
105
  - vendor/cache/diff-lcs-1.2.5.gem
106
106
  - vendor/cache/docile-1.1.5.gem
107
- - vendor/cache/hashie-3.5.5.gem
108
- - vendor/cache/json-2.0.3.gem
107
+ - vendor/cache/hashie-3.5.7.gem
108
+ - vendor/cache/json-2.1.0.gem
109
109
  - vendor/cache/method_source-0.8.2.gem
110
110
  - vendor/cache/mime-types-2.4.3.gem
111
111
  - vendor/cache/multi_json-1.11.0.gem
Binary file