bearcat 1.3.44 → 1.3.45
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 +4 -4
- data/lib/bearcat/api_array.rb +15 -11
- data/lib/bearcat/spec_helpers.rb +59 -0
- data/lib/bearcat/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4df1420a15e970e9935719b7a6a7366023ad524d
|
|
4
|
+
data.tar.gz: c24ace0db440224f5c56835da55f1218fece1505
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a44471bb065353b6ff0bb3e3456a657cad85c977168f22b065c4d5b39c0ded885502de9c49209f47e25b6248e9b454a14a06be4de34ba607e95b2f2c2180cb55
|
|
7
|
+
data.tar.gz: 806e9ba0991a8e0bf62182211e8cb69fc365f27c2b0994ce95429f8f7566c42b03930465d40ec44bba9aa683ba469fdd5efa06ddb6282b7d1f047de93f22496c
|
data/lib/bearcat/api_array.rb
CHANGED
|
@@ -62,23 +62,27 @@ module Bearcat
|
|
|
62
62
|
|
|
63
63
|
def each_page(page_count = 50, &block)
|
|
64
64
|
@page_count = page_count
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
@status = response.status
|
|
68
|
-
@method = response.env[:method]
|
|
69
|
-
init_pages(@headers[:link])
|
|
70
|
-
@members = process_body(response)
|
|
71
|
-
block.call(@members)
|
|
72
|
-
while @link_hash['next']
|
|
73
|
-
response = get_page(@link_hash['next'])
|
|
65
|
+
if pages?
|
|
66
|
+
response = get_page(@link_hash['first'])
|
|
74
67
|
@headers = response.headers
|
|
75
68
|
@status = response.status
|
|
76
69
|
@method = response.env[:method]
|
|
77
|
-
@members = process_body(response)
|
|
78
70
|
init_pages(@headers[:link])
|
|
71
|
+
@members = process_body(response)
|
|
72
|
+
block.call(@members)
|
|
73
|
+
while @link_hash['next']
|
|
74
|
+
response = get_page(@link_hash['next'])
|
|
75
|
+
@headers = response.headers
|
|
76
|
+
@status = response.status
|
|
77
|
+
@method = response.env[:method]
|
|
78
|
+
@members = process_body(response)
|
|
79
|
+
init_pages(@headers[:link])
|
|
80
|
+
block.call(@members)
|
|
81
|
+
end
|
|
82
|
+
@link_hash = {}
|
|
83
|
+
else
|
|
79
84
|
block.call(@members)
|
|
80
85
|
end
|
|
81
|
-
@link_hash = {}
|
|
82
86
|
end
|
|
83
87
|
|
|
84
88
|
def all_pages_each(page_count = 50, &block)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Bearcat RSpec Helpers
|
|
2
|
+
# Can be included in your spec_helper.rb file by using:
|
|
3
|
+
# - `require 'bearcat/spec_helpers'`
|
|
4
|
+
# And
|
|
5
|
+
# - `config.include Bearcat::SpecHelpers`
|
|
6
|
+
module Bearcat::SpecHelpers
|
|
7
|
+
SOURCE_REGEX = /(?<method>get|post|delete|put)\((?<quote>\\?('|"))(?<url>.*)\k<quote>/
|
|
8
|
+
|
|
9
|
+
# Helper method to Stub Bearcat requests.
|
|
10
|
+
# Automagically parses the Bearcat method source to determine the correct URL to stub.
|
|
11
|
+
# Accepts optional keyword parameters to interpolate specific values into the URL.
|
|
12
|
+
# Returns a mostly-normal Webmock stub (:to_return has been overridden to allow :body to be set to a Hash)
|
|
13
|
+
def stub_bearcat(endpoint, prefix: nil, **kwargs)
|
|
14
|
+
if prefix == true
|
|
15
|
+
prefix = canvas_api_client if defined? canvas_api_client
|
|
16
|
+
prefix = canvas_sync_client if defined? canvas_sync_client
|
|
17
|
+
end
|
|
18
|
+
prefix = case prefix
|
|
19
|
+
when nil
|
|
20
|
+
''
|
|
21
|
+
when false
|
|
22
|
+
''
|
|
23
|
+
when true
|
|
24
|
+
raise "stub_bearcat() prefix: set to true, but neither canvas_(sync|api)_client are defined"
|
|
25
|
+
when Bearcat::Client
|
|
26
|
+
prefix.prefix
|
|
27
|
+
when String
|
|
28
|
+
prefix
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
ruby_method = Bearcat::Client.instance_method(endpoint)
|
|
32
|
+
match = SOURCE_REGEX.match(ruby_method.source)
|
|
33
|
+
url = match[:url]
|
|
34
|
+
url = url.gsub(/#\{(?<key>.*?)\}/) do |match|
|
|
35
|
+
match = Regexp.last_match
|
|
36
|
+
v = kwargs[match[:key].to_sym]
|
|
37
|
+
case v
|
|
38
|
+
when nil
|
|
39
|
+
'\\w+'
|
|
40
|
+
when Regexp
|
|
41
|
+
v.source
|
|
42
|
+
when String
|
|
43
|
+
Regexp.escape(v)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
url = prefix + url if prefix.present?
|
|
47
|
+
url_pattern = Regexp.new(url)
|
|
48
|
+
stub = stub_request(match[:method].to_sym, url_pattern)
|
|
49
|
+
stub.define_singleton_method(:to_return, ->(*resps) {
|
|
50
|
+
resps.map do |resp|
|
|
51
|
+
resp[:headers] ||= {}
|
|
52
|
+
resp[:headers]["Content-Type"] ||= "application/json"
|
|
53
|
+
resp[:body] = resp[:body].to_json
|
|
54
|
+
end
|
|
55
|
+
super(*resps)
|
|
56
|
+
})
|
|
57
|
+
stub
|
|
58
|
+
end
|
|
59
|
+
end
|
data/lib/bearcat/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bearcat
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.3.
|
|
4
|
+
version: 1.3.45
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nathan Mills, Jake Sorce
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-06-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -172,6 +172,7 @@ files:
|
|
|
172
172
|
- lib/bearcat/client/sections.rb
|
|
173
173
|
- lib/bearcat/client/submissions.rb
|
|
174
174
|
- lib/bearcat/client/users.rb
|
|
175
|
+
- lib/bearcat/spec_helpers.rb
|
|
175
176
|
- lib/bearcat/version.rb
|
|
176
177
|
- spec/bearcat/api_array_spec.rb
|
|
177
178
|
- spec/bearcat/client/accounts_spec.rb
|
|
@@ -370,7 +371,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
370
371
|
version: '0'
|
|
371
372
|
requirements: []
|
|
372
373
|
rubyforge_project:
|
|
373
|
-
rubygems_version: 2.5.1
|
|
374
|
+
rubygems_version: 2.4.5.1
|
|
374
375
|
signing_key:
|
|
375
376
|
specification_version: 4
|
|
376
377
|
summary: Canvas API
|