quiz_api_client 4.17.0 → 4.18.0

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: e23a84ac19d13092f5a3b444fb14ad9347a6b213823f76d59cf6bbcf416f1d45
4
- data.tar.gz: b2c552afb96c01f953bbddfb6884ca89815a0ce41984ce303e8d577b8eacdc7b
3
+ metadata.gz: ba0876cb763ece686d1cedc404bb62633c5971bea43528a718b6fee780dedcff
4
+ data.tar.gz: 128e36dfb1454227664c0ba02aafe361003407f7dbf30d9d7c29c9e52b95e3bc
5
5
  SHA512:
6
- metadata.gz: f574041231c954f70acc74cc5f3f9ba142b6f9f9f289fc782839e3fbd4eedd116142850380af90707492dbccd8d9f5ff3370c915f76cb971068b5b9010892399
7
- data.tar.gz: 492b05909f9bb60cd5994ee313dca258012b9706525e22fb7f48a2f536792fe9b75d3ac8098f55aa50787a0b6d54b7431e7b86d0a504007f27a2696e16cd5c81
6
+ metadata.gz: daf54ed83085516b8f6e1715baf2fe39428f0cc39631361b4a70ddffd4a7f0a4efddf7563cd03c9112a35578f68786799656eceefe904932b26592a8a826b6a8
7
+ data.tar.gz: b78454c69b4e7d505a8eca415bee8c85206975ca03af2cd801f3f4ad1264981aeec1d95192f642cba8b959897522ac7457d13c5e94d835aadee79dfbc9b8bc31
@@ -4,14 +4,33 @@ module QuizApiClient::Services
4
4
  post_to_quiz_api(params: params, token: token)
5
5
  end
6
6
 
7
+ def show(params:, token: nil)
8
+ client(token: token).get(
9
+ "/api/quizzes/#{params[:quiz_id]}/reports/#{params[:id]}",
10
+ query: { filter: :last_attempt }
11
+ )
12
+ end
13
+
14
+ def export(params:, token: nil)
15
+ client(token: token).get(
16
+ "/api/quizzes/#{params[:quiz_id]}/analyses/export",
17
+ query: { filter: :last_attempt, format: :csv, analysis_type: params[:analysis_type] }
18
+ )
19
+ end
20
+
21
+ def status(params:, token: nil)
22
+ client(token: token).get(
23
+ "/api/quizzes/#{params[:quiz_id]}/analyses/status",
24
+ query: { filter: :last_attempt, analysis_type: params[:analysis_type] }
25
+ )
26
+ end
27
+
7
28
  private
8
29
 
9
30
  def post_to_quiz_api(params:, token:)
10
31
  client(token: token).post(
11
32
  "/api/quizzes/#{params[:quiz_id]}/analyses",
12
- quiz_session_ids: params[:quiz_session_ids],
13
- filter: params[:filter],
14
- analysis_type: params[:analysis_type]
33
+ params
15
34
  )
16
35
  end
17
36
  end
@@ -1,3 +1,3 @@
1
1
  module QuizApiClient
2
- VERSION = '4.17.0'.freeze
2
+ VERSION = '4.18.0'.freeze
3
3
  end
@@ -1,3 +1,5 @@
1
+ require 'csv'
2
+
1
3
  describe QuizApiClient::Services::AnalysesService do
2
4
  let(:host) { 'api.host' }
3
5
  let(:config) { QuizApiClient::Config.new { |c| c.host = host } }
@@ -9,13 +11,12 @@ describe QuizApiClient::Services::AnalysesService do
9
11
  end
10
12
  let(:stubbed_response) { { 'job_id' => 1 } }
11
13
  let(:expected_url) { "https://#{host}/api/quizzes/#{params[:quiz_id]}/analyses" }
12
- let(:expected_params) { { quiz_session_ids: [1, 5, 10], filter: :last_attempt, analysis_type: 'student_analysis' } }
13
14
  let(:status_code) { 200 }
14
15
 
15
16
  before do
16
17
  stub_request(:post, expected_url)
17
18
  .with(
18
- body: expected_params.to_json
19
+ body: params.to_json
19
20
  )
20
21
  .to_return(
21
22
  status: status_code,
@@ -29,4 +30,83 @@ describe QuizApiClient::Services::AnalysesService do
29
30
  expect(result.parsed_response).to eql(stubbed_response)
30
31
  end
31
32
  end
33
+
34
+ describe '#show' do
35
+ let(:params) do
36
+ { quiz_id: 1, id: 2 }
37
+ end
38
+ let(:stubbed_response) { { 'id' => 1 } }
39
+ let(:expected_url) { "https://#{host}/api/quizzes/#{params[:quiz_id]}/reports/#{params[:id]}?filter=last_attempt" }
40
+ let(:status_code) { 200 }
41
+
42
+ before do
43
+ stub_request(:get, expected_url)
44
+ .to_return(
45
+ status: status_code,
46
+ body: stubbed_response.to_json,
47
+ headers: { 'Content-Type' => 'application/json' }
48
+ )
49
+ end
50
+
51
+ it 'gets to quiz_api/api/quizzes/{id}/reports/{id} and returns the response' do
52
+ result = subject.show(params: params, token: 'token')
53
+ expect(result.parsed_response).to eql(stubbed_response)
54
+ end
55
+ end
56
+
57
+ describe 'status' do
58
+ let(:params) do
59
+ { quiz_id: 1, analysis_type: 'item_analysis' }
60
+ end
61
+ let(:stubbed_response) { { 'id' => 1 } }
62
+ let(:expected_url) do
63
+ "https://#{host}/api/quizzes/#{params[:quiz_id]}/analyses/status?filter=last_attempt" +
64
+ + "&analysis_type=#{params[:analysis_type]}"
65
+ end
66
+ let(:status_code) { 200 }
67
+
68
+ before do
69
+ stub_request(:get, expected_url)
70
+ .to_return(
71
+ status: status_code,
72
+ body: stubbed_response.to_json,
73
+ headers: { 'Content-Type' => 'application/json' }
74
+ )
75
+ end
76
+
77
+ it 'gets to quiz_api/api/quizzes/{id}/analyses/status and returns the response' do
78
+ result = subject.status(params: params, token: 'token')
79
+ expect(result.parsed_response).to eql(stubbed_response)
80
+ end
81
+ end
82
+
83
+ describe 'export' do
84
+ let(:params) do
85
+ { quiz_id: 1, analysis_type: 'item_analysis' }
86
+ end
87
+ let(:stubbed_response) do
88
+ CSV.generate(headers: true) do |csv|
89
+ csv << %w[column1 column2 column3]
90
+ end
91
+ end
92
+ let(:expected_url) do
93
+ "https://#{host}/api/quizzes/#{params[:quiz_id]}/analyses/export" \
94
+ "?analysis_type=#{params[:analysis_type]}&filter=last_attempt&format=csv"
95
+ end
96
+ let(:status_code) { 200 }
97
+
98
+ before do
99
+ stub_request(:get, expected_url)
100
+ .to_return(
101
+ status: status_code,
102
+ body: stubbed_response,
103
+ headers: { 'Content-Type' => 'text/csv' }
104
+ )
105
+ end
106
+
107
+ it 'gets to quiz_api/api/quizzes/{id}/analyses/export and returns the response' do
108
+ result = subject.export(params: params, token: 'token')
109
+ expect(result.parsed_response).to eql([%w[column1 column2 column3]])
110
+ end
111
+ end
32
112
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quiz_api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.17.0
4
+ version: 4.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Slaughter
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: exe
17
17
  cert_chain: []
18
- date: 2024-11-13 00:00:00.000000000 Z
18
+ date: 2024-11-21 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: httparty