pandarus 0.6.3 → 0.6.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2131ee95759c437062ab4b868801892f318f4b2
4
- data.tar.gz: eb49c33139b925885cce2b863e93ab9166e904a3
3
+ metadata.gz: ea1afaaa6919f9eed893eb274a1fe527421bf5b8
4
+ data.tar.gz: 77706c514f1af00058f5ac2795a82c0d861c5fc5
5
5
  SHA512:
6
- metadata.gz: 52d1634ec998f2b71c344637895fd2a61589f73d05977351231d43e348be4431f55f2873cad02a86a0b1db3fbe3a273a6ed23d10029307955d7a252016525051
7
- data.tar.gz: 2ec52e7a417f4029b6a19ecefb76e37e89085ce197255227a030d5b2ff12f70ed53a392e4b9a459c98d7e7fa34f2b48d5b73cb7abb3f8876718d4353ef4acfb9
6
+ metadata.gz: 565b795b90cd23a8e712d3aa967c9bb069bbe986c3cf8b054ec7d17fd9a3ce2c1448f9a4a6a32f5e5698aedd59a578035877279dd5f00de5eab5efd99d898fde
7
+ data.tar.gz: a69996ea83e880e05766f0f35f6ba185ebaa2bac8dbfb696c108e7904ca0ab34b9caf8209110d4f3542ac4fb30c746bd93145320d9c3a3461230301c5ab4ece1
@@ -48,19 +48,21 @@ module Pandarus
48
48
  handle_response @http_client.get(@pagination_links.last.next)
49
49
  end
50
50
 
51
+ private
52
+
51
53
  def was_last_page?
54
+ return true if @pagination_links == []
52
55
  @pagination_links.last.last_page?
53
56
  end
54
57
 
55
58
  def handle_response(response)
56
- unless @pagination_links.any? {|links| links == response.env[:pagination_links] }
59
+ response_links = response.env[:pagination_links]
60
+ if response_links && !@pagination_links.any? {|existing_links| existing_links == response_links }
57
61
  @pagination_links << response.env[:pagination_links]
58
62
  end
59
63
  response.body.map{|member| @target_class.new(member) }
60
64
  end
61
65
 
62
- private
63
-
64
66
  def base_path
65
67
  @http_client.url_prefix.path
66
68
  end
@@ -1,3 +1,3 @@
1
1
  module Pandarus
2
- VERSION = '0.6.3' unless defined?(Pandarus::VERSION)
2
+ VERSION = '0.6.4' unless defined?(Pandarus::VERSION)
3
3
  end
@@ -39,20 +39,20 @@ http_interactions:
39
39
  Cache-Control:
40
40
  - must-revalidate, private, max-age=0
41
41
  Set-Cookie:
42
- - _csrf_token=HmhMEGEdhhvRVlnYZLXTwyIGYGjuWeQ68xUPSiAd5vt6GQdXBUXDLL0jOIkGgrqzWEhZKaQTnF3CVFolV0mTzg%3D%3D;
42
+ - _csrf_token=jsM58YpsUDxPQGzaKcvUwzWfBulRrJgI%2B1fYmLoOqbPou3WV%2BSsBUiILFpZng7v0TNsw3inu0mK%2FGu%2Br7zjO4Q%3D%3D;
43
43
  path=/
44
- - _normandy_session=cP7mYMVZ0cCgO7RmBD_99w.5oUsKA4C4mkJk-l49huIqeHphIh-b8Gq1yRT8B9cvpBCTSTSGbICDIbmnIKlZX_Y76DZTEfDSLeyzDuyzECfmLPXW86Z22X6rmTroYwMeAt5ym_3khrSJGefEypDw6Hd.fKoO7AdPLd-swV8VPxGDeHz_SBg.VJLvJg;
44
+ - _normandy_session=zWF8MzAVtYcQl4Ocez9TJA.MdkGjGCWASvMn2GyQEJ647UUwZ5PfS7B216UEU8vilJ2GtqnGI0JSxUhWZLMUldMPFXiOyDU2PCOCp2z1k9e4pbXNa0NRyaywnJYcGazLc5ECUK7aYdUdUTlL5Scj2-j.UrtD2RSC0LuX-gDM8YjMG_WHlvk.VJiTTw;
45
45
  path=/; HttpOnly
46
46
  X-Session-Id:
47
- - ac19512a3ac594145f0b4c21095275e6
47
+ - 76414941a586ff4bef0337f23df28509
48
48
  X-Request-Context-Id:
49
- - 6079e1c0-68f6-0132-4d7c-38e85630c82a
49
+ - 29716e60-6c53-0132-52e9-38e85630c82a
50
50
  X-Canvas-Meta:
51
- - a=1;g=DtbEcIgsiKSxJvSoQKH05C46ONAcwvepb4BEBYAz;s=2;c=development;b=328036;m=328036;u=0.22;y=0.02;d=0.01;
51
+ - a=1;g=DtbEcIgsiKSxJvSoQKH05C46ONAcwvepb4BEBYAz;s=2;c=development;b=371464;m=371464;u=0.23;y=0.02;d=0.01;
52
52
  X-Runtime:
53
- - '0.261794'
53
+ - '0.269341'
54
54
  Date:
55
- - Thu, 18 Dec 2014 15:13:42 GMT
55
+ - Mon, 22 Dec 2014 21:55:27 GMT
56
56
  X-Rack-Cache:
57
57
  - miss
58
58
  Connection:
@@ -71,7 +71,7 @@ http_interactions:
71
71
  Holland","sortable_name":"Holland, Jonathan","short_name":"Jonathan Holland","sis_user_id":"student_4459","integration_id":null,"sis_login_id":"westudent215","sis_import_id":4,"login_id":"westudent215"},{"id":91,"name":"Corey
72
72
  Kelly","sortable_name":"Kelly, Corey","short_name":"Corey Kelly","sis_user_id":"student_4408","integration_id":null,"sis_login_id":"westudent259","sis_import_id":4,"login_id":"westudent259"}]'
73
73
  http_version:
74
- recorded_at: Thu, 18 Dec 2014 15:13:42 GMT
74
+ recorded_at: Mon, 22 Dec 2014 21:55:27 GMT
75
75
  - request:
76
76
  method: get
77
77
  uri: http://shard1.canvas.dev/api/v1/courses/14/users?enrollment_type=student&page=2&per_page=10
@@ -112,20 +112,20 @@ http_interactions:
112
112
  Cache-Control:
113
113
  - must-revalidate, private, max-age=0
114
114
  Set-Cookie:
115
- - _csrf_token=EKCSPyXN2cjUagWmSyxnJaxR8U8sEwoH%2BOK%2BsSftt2ldytoOR4iA464kSZcqS18X32KgFm84PlPPluvGcNWYMw%3D%3D;
115
+ - _csrf_token=PwTWrdYNGV1TEWZ7FgiuFE%2FvSm3ihJcSadN98OblgM5bT47cnXxgZDl7FjpRSsRBfosOG9TgpiYbugW206zEhQ%3D%3D;
116
116
  path=/
117
- - _normandy_session=H9dHgxOeRFp2LKwSrTNzIQ.I42HWwvEwVQ5buNUmA5dvXpAQ5ZVRmlJY3nR57DrpIwxt7DhfRP3lqo99GPyQBz_ZAkKHBQm2CSzGpIsUl7-9wpmgWa4rH-c-eZZf7rIp4gZuviyFtISh8ialNkhn7ZU.P4ihNStsDB5-nXi_LTU-7jxG30c.VJLvJw;
117
+ - _normandy_session=C44slFtEIvJWZfqJXerjLg.qGoXBN9TzBFAYQJLHoL0Ks2u7WJtMDPFD18x8vSdF_FpLwpvOlyBA9nig8aGXbr2wMnom5kV_b45TBP-P1v8WuGPN1JBc0_S_6slI7VYvYOsBidQhoGMU9jk2HdNW7GU.domHfXFXb9VInjtD4HxbfHhaGbs.VJiTTw;
118
118
  path=/; HttpOnly
119
119
  X-Session-Id:
120
- - bdc07fdf3be919cbe7499e043e699c6e
120
+ - 0a8f103db518fda7bb13dc1fe57f68af
121
121
  X-Request-Context-Id:
122
- - 60a38680-68f6-0132-4d7c-38e85630c82a
122
+ - 299d2f70-6c53-0132-52e9-38e85630c82a
123
123
  X-Canvas-Meta:
124
- - a=1;g=DtbEcIgsiKSxJvSoQKH05C46ONAcwvepb4BEBYAz;s=2;c=development;b=328036;m=329924;u=0.43;y=0.02;d=0.01;
124
+ - a=1;g=DtbEcIgsiKSxJvSoQKH05C46ONAcwvepb4BEBYAz;s=2;c=development;b=371464;m=371464;u=0.31;y=0.02;d=0.01;
125
125
  X-Runtime:
126
- - '0.482755'
126
+ - '0.367507'
127
127
  Date:
128
- - Thu, 18 Dec 2014 15:13:43 GMT
128
+ - Mon, 22 Dec 2014 21:55:27 GMT
129
129
  X-Rack-Cache:
130
130
  - miss
131
131
  Connection:
@@ -144,7 +144,7 @@ http_interactions:
144
144
  Watts","sortable_name":"Watts, Stephenson","short_name":"Stephenson Watts","sis_user_id":"student_4442","integration_id":null,"sis_login_id":"westudent496","sis_import_id":4,"login_id":"westudent496"},{"id":115,"name":"Britney
145
145
  Whittle","sortable_name":"Whittle, Britney","short_name":"Britney Whittle","sis_user_id":"student_4432","integration_id":null,"sis_login_id":"westudent504","sis_import_id":4,"login_id":"westudent504"}]'
146
146
  http_version:
147
- recorded_at: Thu, 18 Dec 2014 15:13:43 GMT
147
+ recorded_at: Mon, 22 Dec 2014 21:55:27 GMT
148
148
  - request:
149
149
  method: get
150
150
  uri: http://shard1.canvas.dev/api/v1/courses/14/users?enrollment_type=student&page=3&per_page=10
@@ -184,20 +184,20 @@ http_interactions:
184
184
  Cache-Control:
185
185
  - must-revalidate, private, max-age=0
186
186
  Set-Cookie:
187
- - _csrf_token=euTKz%2FVNURj4NjFMmxl9Cj7GbrsS%2FmZIkaZGH3aHqbUyqJy1hg4oXZluexneaRBLV55ByErLSWPo%2FjNNIvXsgw%3D%3D;
187
+ - _csrf_token=dSENVLsxmQ4hosrEI2e8TwBIPF2ioOYAQ90gHTFrA35HS38nw2XRYxT1%2F4JmC%2B8CKzhXE8TqhFAwhE8qYS56NQ%3D%3D;
188
188
  path=/
189
- - _normandy_session=4H57XVZatJMTTHBTSz0XXg.KJo0W_Gnid9O7o93o7D0B0JXYKU_0DYjX3p5F9mu-e4jYDfeb6xGLjDIgeNmOgsH3RfmC93cFnqnoWl_VNS0F_LwZM6rgmtqWmyXSZYD2G-4Zyi1tL7FP95RBddu6MnT.8pSpRuwegl1mhR3wIZjeSFWPIzs.VJLvJw;
189
+ - _normandy_session=vXrwazjrTOLyY4EZV54PGA.1oBz9DK-UZghtfaMWXSTsnqTGCjlKeJZsX6fmXufW9UsK1BoUUG3sY2jnjkP9a7CFjDUW9K7AVFaHwy1B8G1riFP9C8S_i2fg5VS6tFpEBsOydFriP5w10_7Mltd_o64.ZYeQUSsY-vnIhxhUUO8sWdNoRXs.VJiTTw;
190
190
  path=/; HttpOnly
191
191
  X-Session-Id:
192
- - 62e9e75f213e4a7d5cc91786fea42c90
192
+ - 1b093ceebeb6ef802d1b834b9019d557
193
193
  X-Request-Context-Id:
194
- - 60ef8850-68f6-0132-4d7c-38e85630c82a
194
+ - 29d75230-6c53-0132-52e9-38e85630c82a
195
195
  X-Canvas-Meta:
196
- - a=1;g=DtbEcIgsiKSxJvSoQKH05C46ONAcwvepb4BEBYAz;s=2;c=development;b=329924;m=329968;u=0.20;y=0.02;d=0.01;
196
+ - a=1;g=DtbEcIgsiKSxJvSoQKH05C46ONAcwvepb4BEBYAz;s=2;c=development;b=371464;m=371464;u=0.06;y=0.01;d=0.01;
197
197
  X-Runtime:
198
- - '0.237708'
198
+ - '0.096645'
199
199
  Date:
200
- - Thu, 18 Dec 2014 15:13:43 GMT
200
+ - Mon, 22 Dec 2014 21:55:27 GMT
201
201
  X-Rack-Cache:
202
202
  - miss
203
203
  Connection:
@@ -207,5 +207,5 @@ http_interactions:
207
207
  string: '[{"id":108,"name":"Jessy Young","sortable_name":"Young, Jessy","short_name":"Jessy
208
208
  Young","sis_user_id":"student_4425","integration_id":null,"sis_login_id":"westudent520","sis_import_id":4,"login_id":"westudent520"}]'
209
209
  http_version:
210
- recorded_at: Thu, 18 Dec 2014 15:13:43 GMT
210
+ recorded_at: Mon, 22 Dec 2014 21:55:27 GMT
211
211
  recorded_with: VCR 2.9.3
@@ -0,0 +1,64 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://shard1.canvas.dev/api/v1/courses/183/users?enrollment_type=student
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Authorization:
13
+ - Bearer Bearer 1~A5dY8IsOyhVOVRJi4V3XWGNsa7pzuIbdM8OCv62YTRFqOsiS9vX0NbtY8PR9q4pX
14
+ User-Agent:
15
+ - Footrest
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ X-Canvas-User-Id:
24
+ - '10000000000001'
25
+ Link:
26
+ - <http://shard1.canvas.dev/api/v1/courses/183/users?enrollment_type=student&page=1&per_page=10>;
27
+ rel="current",<http://shard1.canvas.dev/api/v1/courses/183/users?enrollment_type=student&page=1&per_page=10>;
28
+ rel="first",<http://shard1.canvas.dev/api/v1/courses/183/users?enrollment_type=student&page=1&per_page=10>;
29
+ rel="last"
30
+ X-Frame-Options:
31
+ - SAMEORIGIN
32
+ Content-Type:
33
+ - application/json; charset=utf-8
34
+ X-Ua-Compatible:
35
+ - IE=Edge
36
+ Etag:
37
+ - '"d751713988987e9331980363e24189ce"'
38
+ Cache-Control:
39
+ - must-revalidate, private, max-age=0
40
+ Set-Cookie:
41
+ - _csrf_token=70LPEWYX8OUtxNrRWPyLn%2FF5xpDuVASz9YBJQekUgJWBGIBcE2bBqV2erbMBqe713ivx4L8%2FZsKnuBgEv2TDow%3D%3D;
42
+ path=/
43
+ - _normandy_session=yClqZDQD-PKanqxq4xbeUA.YKVmGVKaKJ6pC4Lf_jlDeelPxqjDK5ZO1wn57l9_e2q_xaAlLWt_nkEYd4arBr8x1sFipxANo5tXnOmCIxduDZhah0oXGnPxhwcowYPwH4bW3R0-udl6FsJ6WGAFwU2z._u4S-ax72PiWoXX-kD6cSPOo88Y.VK1_SA;
44
+ path=/; HttpOnly
45
+ X-Session-Id:
46
+ - 2698d12b0db9b5da795f2e5df6f53ba6
47
+ X-Request-Context-Id:
48
+ - 927c35e0-78cb-0132-bea1-38e85630c82a
49
+ X-Canvas-Meta:
50
+ - a=1;g=DtbEcIgsiKSxJvSoQKH05C46ONAcwvepb4BEBYAz;s=2;c=development;b=341124;m=341280;u=0.21;y=0.02;d=0.01;
51
+ X-Runtime:
52
+ - '0.260593'
53
+ Date:
54
+ - Wed, 07 Jan 2015 18:47:36 GMT
55
+ X-Rack-Cache:
56
+ - miss
57
+ Connection:
58
+ - close
59
+ body:
60
+ encoding: UTF-8
61
+ string: "[]"
62
+ http_version:
63
+ recorded_at: Wed, 07 Jan 2015 18:47:36 GMT
64
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,59 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://shard1.canvas.dev/api/v1/courses/14/sections
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Authorization:
13
+ - Bearer Bearer 1~A5dY8IsOyhVOVRJi4V3XWGNsa7pzuIbdM8OCv62YTRFqOsiS9vX0NbtY8PR9q4pX
14
+ User-Agent:
15
+ - Footrest
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ X-Canvas-User-Id:
24
+ - '10000000000001'
25
+ X-Frame-Options:
26
+ - SAMEORIGIN
27
+ Content-Type:
28
+ - application/json; charset=utf-8
29
+ X-Ua-Compatible:
30
+ - IE=Edge
31
+ Etag:
32
+ - '"d57de41ff2edcb1840cba95cd99ceb93"'
33
+ Cache-Control:
34
+ - must-revalidate, private, max-age=0
35
+ Set-Cookie:
36
+ - _csrf_token=Nn0Xriy%2BzySk5XIE4WX%2FIYmWuMirPk52%2FY8rWDthFp1SS17JfMipYP6%2FS2%2BwNaVx8N%2F9pflOPDfI%2FmpuYVlb%2BA%3D%3D;
37
+ path=/
38
+ - _normandy_session=kjUGEKraWqjH8yUDgkjv0g.KV0__PysS8xFX02CiZFVHdyhaQB6RboB7hzYJ4R95FKcBGg7GgtaHLEfZ1wtPz2RAJ-53cGqRKwvcGM-ZJxi4gTz4iBuSHLC990OlekqmtjCyIq1Z4jnpAkGQ2Lc0md7.-Fkgs-L9w-l5bvVJaon6h0U9ths.VJiCAA;
39
+ path=/; HttpOnly
40
+ X-Session-Id:
41
+ - ed3089094605b369c73c4ff0002cc5fe
42
+ X-Request-Context-Id:
43
+ - d877b560-6c48-0132-52e9-38e85630c82a
44
+ X-Canvas-Meta:
45
+ - a=1;g=DtbEcIgsiKSxJvSoQKH05C46ONAcwvepb4BEBYAz;s=2;c=development;b=328372;m=328372;u=0.19;y=0.01;d=0.00;
46
+ X-Runtime:
47
+ - '0.225363'
48
+ Date:
49
+ - Mon, 22 Dec 2014 20:41:36 GMT
50
+ X-Rack-Cache:
51
+ - miss
52
+ Connection:
53
+ - close
54
+ body:
55
+ encoding: UTF-8
56
+ string: '[{"course_id":14,"end_at":null,"id":14,"name":"1st Grade English-EL101-14-15-Barker","nonxlist_course_id":null,"start_at":null,"sis_section_id":"1994","sis_course_id":"1994","integration_id":"1994","sis_import_id":4}]'
57
+ http_version:
58
+ recorded_at: Mon, 22 Dec 2014 20:41:36 GMT
59
+ recorded_with: VCR 2.9.3
@@ -43,14 +43,27 @@ module Pandarus
43
43
  end
44
44
 
45
45
  describe '#to_a' do
46
- let(:array) {
47
- VCR.use_cassette('remote_collection_all_pages') do
48
- collection.to_a
46
+ it 'must gracefully handle an empty collection' do
47
+ VCR.use_cassette('remote_collection_empty') do
48
+ collection.instance_variable_set(:@path, '/v1/courses/183/users')
49
+ array = collection.to_a
50
+ expect(array).to be_empty
49
51
  end
50
- }
52
+ end
53
+
54
+ it 'must happily fetch a collection with a single page' do
55
+ VCR.use_cassette('remote_collection_single_page') do
56
+ collection = RemoteCollection.new(client, Section, '/v1/courses/14/sections', {})
57
+ array = collection.to_a
58
+ expect(array.size).to eq 1
59
+ end
60
+ end
51
61
 
52
- it 'must fetch all pages and combine them into a single array' do
53
- expect(array.size).to eq 21
62
+ it 'must fetch all pages of a multi page collection and combine them into a single array' do
63
+ VCR.use_cassette('remote_collection_all_pages') do
64
+ array = collection.to_a
65
+ expect(array.size).to eq 21
66
+ end
54
67
  end
55
68
  end
56
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pandarus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Duane Johnson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-22 00:00:00.000000000 Z
11
+ date: 2015-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -261,7 +261,9 @@ files:
261
261
  - spec/api_base_spec.rb
262
262
  - spec/client_spec.rb
263
263
  - spec/fixtures/vcr_cassettes/remote_collection_all_pages.yml
264
+ - spec/fixtures/vcr_cassettes/remote_collection_empty.yml
264
265
  - spec/fixtures/vcr_cassettes/remote_collection_first_page.yml
266
+ - spec/fixtures/vcr_cassettes/remote_collection_single_page.yml
265
267
  - spec/lib/pandarus/remote_collection_spec.rb
266
268
  - spec/model_base_spec.rb
267
269
  - spec/sis_import_spec.rb
@@ -296,7 +298,9 @@ test_files:
296
298
  - spec/api_base_spec.rb
297
299
  - spec/client_spec.rb
298
300
  - spec/fixtures/vcr_cassettes/remote_collection_all_pages.yml
301
+ - spec/fixtures/vcr_cassettes/remote_collection_empty.yml
299
302
  - spec/fixtures/vcr_cassettes/remote_collection_first_page.yml
303
+ - spec/fixtures/vcr_cassettes/remote_collection_single_page.yml
300
304
  - spec/lib/pandarus/remote_collection_spec.rb
301
305
  - spec/model_base_spec.rb
302
306
  - spec/sis_import_spec.rb