resync-client 0.3.0 → 0.3.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
  SHA1:
3
- metadata.gz: f400045ef45597f5b91078336f0210322b58ff29
4
- data.tar.gz: c6f10cbd9a55a03e7b2d9c7db1f5bd721189acff
3
+ metadata.gz: c72554545a2d19f93f85eb0b021de5516041024f
4
+ data.tar.gz: a285cc547f7c90a4bc6d1ca5ef27ae8e75b2c9fb
5
5
  SHA512:
6
- metadata.gz: 561e1fc1d2c34e59a31ace3f76ae1522839500a65a8b6f6a407654ee32b91f7ded1cba8b07e8550932b03e2f6dff983205b9d51ba7042689aca1f897772dbd9a
7
- data.tar.gz: 327fe3b46728b19e6043f78f363df94d1d4a74b21c3363fa70d8f720c02ce500f5bf2e188bf96cb8c16bfdd3b61ed2ef0847d1888a1e9eb2279940cbae34cba8
6
+ metadata.gz: 8e4600dffb2cbe106fb2454c402e84085743ccbaed5d3195564bdc79ddb96d26b1c746876aedabbc599ac1d262e6a7f16b37c4bc412b782854f65679fd15bbf4
7
+ data.tar.gz: ff4b5427c5a8fdbb88d9a56688cb908ccf3bdaae73e0aba580c202a8b30ba7f07e74dd37765e0985499802bc7c57f686672f96dfd07eaf7a499c6ccc08e2c6f9
data/CHANGES.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.3.1
2
+
3
+ - Make `#get` and `#get_and_parse` in `Downloadable` (i.e., `Resource` and `Link`) cache the downloaded content
4
+
1
5
  # 0.3.0
2
6
 
3
7
  - Update to depend on [resync](https://github.com/dmolesUC3/resync) 0.3.0
@@ -9,24 +9,31 @@ module Resync
9
9
  prepend ClientDelegator
10
10
 
11
11
  # Delegates to {Client#get_and_parse} to get the contents of
12
- # +:uri+ as a ResourceSync document
12
+ # +:uri+ as a ResourceSync document. The downloaded, parsed
13
+ # document will only be downloaded once; subsequent calls to
14
+ # this method will return the cached document.
13
15
  def get_and_parse # rubocop:disable Style/AccessorMethodName
14
- client.get_and_parse(uri)
16
+ @parsed_content ||= client.get_and_parse(uri)
15
17
  end
16
18
 
17
- # Delegates to {Client#get} to get the contents of this +:uri+
19
+ # Delegates to {Client#get} to get the contents of this +:uri+.
20
+ # The downloaded content will only be downloaded once; subsequent
21
+ # calls to this method will return the cached content.
18
22
  def get # rubocop:disable Style/AccessorMethodName
19
- client.get(uri)
23
+ @content ||= client.get(uri)
20
24
  end
21
25
 
22
26
  # Delegates to {Client#download_to_temp_file} to download the
23
- # contents of +:uri+ to a file.
27
+ # contents of +:uri+ to a file. Subsequent calls will download
28
+ # the contents again, each time to a fresh temporary file.
24
29
  def download_to_temp_file # rubocop:disable Style/AccessorMethodName
25
30
  client.download_to_temp_file(uri)
26
31
  end
27
32
 
28
33
  # Delegates to {Client#download_to_file} to download the
29
- # contents of +:uri+ to the specified path.
34
+ # contents of +:uri+ to the specified path. Subsequent
35
+ # calls wiill download the contents again, potentially
36
+ # overwriting the file if given the same path.
30
37
  # @param path [String] the path to download to
31
38
  def download_to_file(path)
32
39
  client.download_to_file(uri: uri, path: path)
@@ -1,6 +1,6 @@
1
1
  module Resync
2
2
  class Client
3
3
  # The version of this gem.
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
6
6
  end
@@ -2,6 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  module Resync
4
4
 
5
+ # TODO: Share examples
5
6
  describe 'extensions' do
6
7
 
7
8
  # ------------------------------------------------------------
@@ -178,6 +179,14 @@ module Resync
178
179
  expect(client).to receive(:get_and_parse).with(@resources[0].uri) { resource }
179
180
  expect(@resources[0].get_and_parse).to be(resource)
180
181
  end
182
+
183
+ it 'caches the downloaded contents' do
184
+ client = instance_double(Resync::Client)
185
+ resource = instance_double(Resync::ResourceList)
186
+ @list.client = client
187
+ expect(client).to receive(:get_and_parse).once.with(@resources[0].uri) { resource }
188
+ expect(@resources[0].get_and_parse).to be(@resources[0].get_and_parse)
189
+ end
181
190
  end
182
191
 
183
192
  describe '#get' do
@@ -188,6 +197,14 @@ module Resync
188
197
  expect(client).to receive(:get).with(@resources[0].uri) { data }
189
198
  expect(@resources[0].get).to be(data)
190
199
  end
200
+
201
+ it 'caches the downloaded contents' do
202
+ data = 'I am the contents of a resource'
203
+ client = instance_double(Resync::Client)
204
+ @list.client = client
205
+ expect(client).to receive(:get).once.with(@resources[0].uri) { data }
206
+ expect(@resources[0].get).to be(@resources[0].get)
207
+ end
191
208
  end
192
209
 
193
210
  describe '#download_to_temp_file' do
@@ -198,6 +215,16 @@ module Resync
198
215
  expect(client).to receive(:download_to_temp_file).with(@resources[0].uri) { path }
199
216
  expect(@resources[0].download_to_temp_file).to be(path)
200
217
  end
218
+
219
+ it 'downloads anew each time' do
220
+ path1 = '/tmp/whatever1.zip'
221
+ path2 = '/tmp/whatever2.zip'
222
+ client = instance_double(Resync::Client)
223
+ @list.client = client
224
+ expect(client).to receive(:download_to_temp_file).twice.with(@resources[0].uri).and_return(path1, path2)
225
+ expect(@resources[0].download_to_temp_file).to eq(path1)
226
+ expect(@resources[0].download_to_temp_file).to eq(path2)
227
+ end
201
228
  end
202
229
 
203
230
  describe '#download_to_file' do
@@ -208,6 +235,14 @@ module Resync
208
235
  expect(client).to receive(:download_to_file).with(uri: @resources[0].uri, path: path) { path }
209
236
  expect(@resources[0].download_to_file(path)).to be(path)
210
237
  end
238
+
239
+ it 'downloads anew each time' do
240
+ path = '/tmp/whatever.zip'
241
+ client = instance_double(Resync::Client)
242
+ @list.client = client
243
+ expect(client).to receive(:download_to_file).twice.with(uri: @resources[0].uri, path: path) { path }
244
+ expect(@resources[0].download_to_file(path)).to eq(@resources[0].download_to_file(path))
245
+ end
211
246
  end
212
247
  end
213
248
 
@@ -220,6 +255,14 @@ module Resync
220
255
  expect(client).to receive(:get_and_parse).with(@links[0].uri) { resource }
221
256
  expect(@links[0].get_and_parse).to be(resource)
222
257
  end
258
+
259
+ it 'caches the downloaded contents' do
260
+ client = instance_double(Resync::Client)
261
+ resource = instance_double(Resync::ResourceList)
262
+ @list.client = client
263
+ expect(client).to receive(:get_and_parse).once.with(@links[0].uri) { resource }
264
+ expect(@links[0].get_and_parse).to be(@links[0].get_and_parse)
265
+ end
223
266
  end
224
267
 
225
268
  describe '#get' do
@@ -230,11 +273,19 @@ module Resync
230
273
  expect(client).to receive(:get).with(@links[0].uri) { data }
231
274
  expect(@links[0].get).to be(data)
232
275
  end
276
+
277
+ it 'caches the downloaded contents' do
278
+ data = 'I am the contents of a link'
279
+ client = instance_double(Resync::Client)
280
+ @list.client = client
281
+ expect(client).to receive(:get).once.with(@links[0].uri) { data }
282
+ expect(@links[0].get).to be(@links[0].get)
283
+ end
233
284
  end
234
285
 
235
286
  describe '#download_to_temp_file' do
236
287
  it 'downloads the link contents to a file using the injected client' do
237
- path = '/tmp/whatever.zip'
288
+ path = '/tmp/whatever1.zip'
238
289
  client = instance_double(Resync::Client)
239
290
  @list.client = client
240
291
  expect(client).to receive(:download_to_temp_file).with(@links[0].uri) { path }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resync-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Moles
@@ -248,9 +248,9 @@ files:
248
248
  - spec/unit/resync/client/client_spec.rb
249
249
  - spec/unit/resync/client/dump_index_spec.rb
250
250
  - spec/unit/resync/client/dump_spec.rb
251
- - spec/unit/resync/client/extensions_spec.rb
252
251
  - spec/unit/resync/client/http_helper_spec.rb
253
252
  - spec/unit/resync/client/list_index_spec.rb
253
+ - spec/unit/resync/client/mixins_spec.rb
254
254
  - spec/unit/resync/client/zip_package_spec.rb
255
255
  homepage: http://github.com/dmolesUC3/resync-client
256
256
  licenses:
@@ -313,8 +313,8 @@ test_files:
313
313
  - spec/unit/resync/client/client_spec.rb
314
314
  - spec/unit/resync/client/dump_index_spec.rb
315
315
  - spec/unit/resync/client/dump_spec.rb
316
- - spec/unit/resync/client/extensions_spec.rb
317
316
  - spec/unit/resync/client/http_helper_spec.rb
318
317
  - spec/unit/resync/client/list_index_spec.rb
318
+ - spec/unit/resync/client/mixins_spec.rb
319
319
  - spec/unit/resync/client/zip_package_spec.rb
320
320
  has_rdoc: