bearcat 1.3.52 → 1.3.53

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: 57aeab92bce2490d628818355f14eda3f2a78015e865daea4f41c3f4ab5b0753
4
- data.tar.gz: fbec8269e921270245d25fd59c9f63647cd2e34ce794b16b1c0b62d50cf92cb9
3
+ metadata.gz: f0cf8e258d39569d2594318b7ab932d6330a6c431457209296ef15a2a0e2ce1c
4
+ data.tar.gz: 0271b96f8803739253365ab53c65246927a94f81a762f2ab935f1f5ecb47cb6e
5
5
  SHA512:
6
- metadata.gz: ce9efc0afffbc1e3e7aba6cd027a1f6c282a953bb62585328d28911c46f8b794e34bd896e16926f927533784263608854dabcaaecfbb7b7f10cc351478dea28b
7
- data.tar.gz: d8912116b917f0b98e7bab56fcbf8c6c20dd7723d667cb8b0f449d48dd06514c19bb6424733bb99d4f79bf781962f6382a6af7061cebbc4ac2954741001629c7
6
+ metadata.gz: f786b3e10b6c69e1de4d98221167099ea626abca6769394eff4d72eb53c99eb0fa4594070c08e259302e401dfca44b314c89246aead3e39afd1b038250e27e87
7
+ data.tar.gz: adb1e066f78c93c80e7ce0f326ddb9bfee40a93493fe5c184dd2f873111db53c44fe9bbd00d72ca2aef658177885e6b6acb959eee9f3fc7e9b5f57e5bd78c115
@@ -10,7 +10,17 @@ module Bearcat
10
10
  elsif key = array_key(response)
11
11
  ApiArray.new(response, api_client, key)
12
12
  else
13
- response.body
13
+ make_indifferent(response.body)
14
+ end
15
+ end
16
+
17
+ def self.make_indifferent(thing)
18
+ if thing.is_a?(Array)
19
+ thing.map { |v| make_indifferent(v) }
20
+ elsif thing.is_a?(Hash)
21
+ thing.with_indifferent_access
22
+ else
23
+ thing
14
24
  end
15
25
  end
16
26
 
@@ -172,11 +182,10 @@ module Bearcat
172
182
 
173
183
  def process_body(response)
174
184
  if response.body.is_a?(Array)
175
- response.body
185
+ ApiArray.make_indifferent(response.body)
176
186
  elsif response.body.is_a?(Hash) && @array_key
177
- response.body[@array_key]
187
+ ApiArray.make_indifferent(response.body[@array_key])
178
188
  end
179
189
  end
180
-
181
190
  end
182
191
  end
@@ -5,6 +5,7 @@ require 'bearcat'
5
5
  # - `require 'bearcat/spec_helpers'`
6
6
  # And
7
7
  # - `config.include Bearcat::SpecHelpers`
8
+ # This helper requires `gem 'method_source'` in your test group
8
9
  module Bearcat::SpecHelpers
9
10
  SOURCE_REGEX = /(?<method>get|post|delete|put)\((?<quote>\\?('|"))(?<url>.*)\k<quote>/
10
11
 
@@ -1,3 +1,3 @@
1
1
  module Bearcat
2
- VERSION = '1.3.52' unless defined?(Bearcat::VERSION)
2
+ VERSION = '1.3.53' unless defined?(Bearcat::VERSION)
3
3
  end
@@ -1,9 +1,11 @@
1
1
  require 'helper'
2
2
 
3
3
  describe Bearcat::ApiArray do
4
+ let(:api_client) { double }
5
+ let(:response_body) { @response_body || [] }
6
+ let(:original_response) { double(body: response_body, status: 200, headers: {}, env: {}) }
7
+
4
8
  describe 'get_page' do
5
- let(:api_client) { double }
6
- let(:original_response) { double(body: [], status: 200, headers: {}, env: {}) }
7
9
  let(:api_array) { described_class.process_response(original_response, api_client) }
8
10
  let(:connection) { double }
9
11
  let(:request) { double }
@@ -52,4 +54,28 @@ describe Bearcat::ApiArray do
52
54
  api_array.send(:get_page, 'https://fake.com?', 'per_page' => 10)
53
55
  end
54
56
  end
57
+
58
+ context 'makes returned values indifferent' do
59
+ it 'makes a Hash response indifferent' do
60
+ @response_body = { something: 1 }
61
+ result = described_class.process_response(original_response, api_client)
62
+ expect(result[:something]).to eq 1
63
+ expect(result['something']).to eq 1
64
+ end
65
+
66
+ it 'makes an Array response indifferent' do
67
+ @response_body = [{ something: 1 }]
68
+ result = described_class.process_response(original_response, api_client)
69
+ expect(result[0][:something]).to eq 1
70
+ expect(result[0]['something']).to eq 1
71
+ end
72
+
73
+ it 'makes a single-key Hash response indifferent' do
74
+ @response_body = { 'something' => [ { foo: 1 } ] }
75
+ allow(described_class).to receive(:array_key).and_return('something')
76
+ result = described_class.process_response(original_response, api_client)
77
+ expect(result[0][:foo]).to eq 1
78
+ expect(result[0]['foo']).to eq 1
79
+ end
80
+ end
55
81
  end
@@ -91,8 +91,9 @@ describe Bearcat::Client::Sections do
91
91
  it 'sets extensions on a quiz' do
92
92
  stub_post(@client, "/api/v1/courses/1/quiz_extensions").to_return(json_response("quizzes/quiz_extension.json"))
93
93
  quiz_extension = @client.course_quiz_extensions('1', {quiz_extensions: [{user_id: 1}, {extra_time: 30}]})
94
- quiz_extension.class.should eq(Hash)
94
+ quiz_extension.should be_a Hash
95
95
  quiz_extension['quiz_extensions'].first['extra_time'].should eq(30)
96
+ quiz_extension[:quiz_extensions].first[:extra_time].should eq(30)
96
97
  end
97
98
 
98
99
  it 'gets learning outcome results' do
@@ -25,8 +25,9 @@ describe Bearcat::Client::Discussions do
25
25
  discussions = @client.course_discussions('1')
26
26
  discussions.class.should eq(Bearcat::ApiArray)
27
27
  discussions.count.should == 1
28
- discussions[0].class.should eq(Hash)
28
+ discussions[0].should be_a Hash
29
29
  discussions[0]['id'].should == 1
30
+ discussions[0][:id].should == 1
30
31
  end
31
32
 
32
33
  it 'returns group discussion topics' do
@@ -34,8 +35,9 @@ describe Bearcat::Client::Discussions do
34
35
  discussions = @client.group_discussions('1')
35
36
  discussions.class.should eq(Bearcat::ApiArray)
36
37
  discussions.count.should == 1
37
- discussions[0].class.should eq(Hash)
38
+ discussions[0].should be_a Hash
38
39
  discussions[0]['id'].should == 1
40
+ discussions[0][:id].should == 1
39
41
  end
40
42
 
41
43
  it 'returns course discussion entries' do
@@ -43,8 +45,9 @@ describe Bearcat::Client::Discussions do
43
45
  discussions = @client.course_discussion_entries('1', '1')
44
46
  discussions.class.should eq(Bearcat::ApiArray)
45
47
  discussions.count.should == 1
46
- discussions[0].class.should eq(Hash)
48
+ discussions[0].should be_a Hash
47
49
  discussions[0]['id'].should == 1
50
+ discussions[0][:id].should == 1
48
51
  end
49
52
 
50
53
  it 'returns group discussion entries' do
@@ -52,8 +55,9 @@ describe Bearcat::Client::Discussions do
52
55
  discussions = @client.group_discussion_entries('1', '1')
53
56
  discussions.class.should eq(Bearcat::ApiArray)
54
57
  discussions.count.should == 1
55
- discussions[0].class.should eq(Hash)
58
+ discussions[0].should be_a Hash
56
59
  discussions[0]['id'].should == 1
60
+ discussions[0][:id].should == 1
57
61
  end
58
62
 
59
63
  it 'returns course discussion entry replies' do
@@ -61,8 +65,9 @@ describe Bearcat::Client::Discussions do
61
65
  discussions = @client.course_discussion_entry_replies('1', '1', '1')
62
66
  discussions.class.should eq(Bearcat::ApiArray)
63
67
  discussions.count.should == 1
64
- discussions[0].class.should eq(Hash)
68
+ discussions[0].should be_a Hash
65
69
  discussions[0]['id'].should == 3
70
+ discussions[0][:id].should == 3
66
71
  end
67
72
 
68
73
  it 'returns group discussion entry replies' do
@@ -70,8 +75,9 @@ describe Bearcat::Client::Discussions do
70
75
  discussions = @client.group_discussion_entry_replies('1', '1', '1')
71
76
  discussions.class.should eq(Bearcat::ApiArray)
72
77
  discussions.count.should == 1
73
- discussions[0].class.should eq(Hash)
78
+ discussions[0].should be_a Hash
74
79
  discussions[0]['id'].should == 3
80
+ discussions[0][:id].should == 3
75
81
  end
76
82
 
77
83
  it 'returns a single group discussion' do
@@ -8,8 +8,9 @@ describe Bearcat::Client::Quizzes do
8
8
  it "updates a single quiz" do
9
9
  stub_put(@client, "/api/v1/courses/1/quizzes/38").to_return(json_response("quizzes/course_quiz.json"))
10
10
  course_quiz = @client.edit_quiz('1', '38')
11
- course_quiz.class.should eq(Hash)
11
+ course_quiz.should be_a Hash
12
12
  course_quiz['id'].should == 38
13
+ course_quiz[:id].should == 38
13
14
  end
14
15
 
15
16
  it "returns a courses quizzes" do
@@ -24,22 +25,25 @@ describe Bearcat::Client::Quizzes do
24
25
  it "returns a single quiz" do
25
26
  stub_get(@client, "/api/v1/courses/1/quizzes/38").to_return(json_response("quizzes/course_quiz.json"))
26
27
  course_quiz = @client.quiz('1', '38')
27
- course_quiz.class.should eq(Hash)
28
+ course_quiz.should be_a Hash
28
29
  course_quiz['id'].should == 38
30
+ course_quiz[:id].should == 38
29
31
  end
30
32
 
31
33
  it 'sets extensions on a quiz' do
32
34
  stub_post(@client, "/api/v1/courses/1/quizzes/1/extensions").to_return(json_response("quizzes/quiz_extension.json"))
33
35
  quiz_extension = @client.quiz_extensions('1', '1', {quiz_extensions: [{user_id: 1}, {extra_time: 30}]})
34
- quiz_extension.class.should eq(Hash)
36
+ quiz_extension.should be_a Hash
35
37
  quiz_extension['quiz_extensions'].first['extra_time'].should eq(30)
38
+ quiz_extension[:quiz_extensions].first[:extra_time].should eq(30)
36
39
  end
37
40
 
38
41
  it 'returns a quiz assignment override' do
39
42
  stub_get(@client, "/api/v1/courses/1/quizzes/assignment_overrides?quiz_assignment_overrides%5B%5D%5Bquiz_ids%5D=13").to_return(json_response("quizzes/quiz_assignment_override.json"))
40
43
  quiz_overrides = @client.quiz_assignment_overrides('1',{:quiz_assignment_overrides => [{ :quiz_ids => 13 }] })
41
- quiz_overrides.class.should eq(Hash)
44
+ quiz_overrides.should be_a Hash
42
45
  quiz_overrides['quiz_assignment_overrides'].first['quiz_id'].should eq(1014)
46
+ quiz_overrides[:quiz_assignment_overrides].first[:quiz_id].should eq(1014)
43
47
  end
44
48
 
45
49
 
@@ -56,8 +60,9 @@ describe Bearcat::Client::Quizzes do
56
60
  course_quiz_questions = @client.quiz_questions('1', '1')
57
61
  course_quiz_questions.class.should eq(Bearcat::ApiArray)
58
62
  course_quiz_questions.count.should == 1
59
- course_quiz_questions[0].class.should eq(Hash)
63
+ course_quiz_questions[0].should be_a Hash
60
64
  course_quiz_questions[0]['id'].should == 1
65
+ course_quiz_questions[0][:id].should == 1
61
66
  end
62
67
 
63
68
  end
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.52
4
+ version: 1.3.53
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: 2020-01-14 00:00:00.000000000 Z
11
+ date: 2020-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake