quiz_api_client 4.3.0 → 4.4.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: 11e55f74ad6fd90e5f09e214394d3d44103e7027d83ce03299f5670cbc79111d
4
- data.tar.gz: 836308804ec45f08806c57bf63c6d7b9167e03eee52d955e7bca38b310f75305
3
+ metadata.gz: 6e1f12f936c33b3cf09fe4f8475aa40dfc7dbde37e65ed81b7d62ef07d23c86c
4
+ data.tar.gz: 9b4895c5dedd2d56fb64a79d2d03e5c6a8989832a9a51f912920fd71aa67582b
5
5
  SHA512:
6
- metadata.gz: 9ed1d073d41458ff170b5767eec5d37e560af8211f6fa5da0906d7d644411a9a4e589c7d644b807300dd76400374e0e9bcd58d4595bd2e4004d65d228e4afb9f
7
- data.tar.gz: 26d1ce56705ad6a1ba18c93175ae572e4ab54e95438513095c663c6a3d6efda3a57cce29ff432ac6885b5bf139305f954bab53890360b89945fdc0c48878b123
6
+ metadata.gz: '009317d5880a188a2ba3ed14f1b937fc34b35f169ab819aaedfd57c09550b5a9acea19db12d6ca8591c13cd41b252e200d82022a236cfdd6f6271a682496ee38'
7
+ data.tar.gz: 5f8059807154051560b72466ad20452f4f42b771e528ed1a9235d3eca12e0e802af9ca7fe5434dcd740dd808908181357474659bd6c66af25d9ff0072d0ee949
data/README.md CHANGED
@@ -199,7 +199,7 @@ Pact file to a local Pact Broker.
199
199
 
200
200
  ### Development Workflow:
201
201
 
202
- 1. In the quiz_api repo, spin up the Quiz API service with `bin/dev-setup`
202
+ 1. In the quiz_api repo, spin up the Quiz API service with `bin/setup`
203
203
  2. In the quiz_pact_broker repo, spin up a Pact Broker with `bin/dev-setup`
204
204
  3. In the quiz_api repo, write Pact provider states in the
205
205
  spec/service_consumers/api/quiz_api_client_ruby/ directory as needed
@@ -0,0 +1,26 @@
1
+ module QuizApiClient::Services
2
+ class CoursesService < BaseApiService
3
+ def create(params:, token: nil)
4
+ post_to_quiz_api(params: params, token: token)
5
+ end
6
+
7
+ def destroy(params:, token: nil)
8
+ delete_from_quiz_api(params: params, token: token)
9
+ end
10
+
11
+ private
12
+
13
+ def post_to_quiz_api(params:, token:)
14
+ client(token: token).post(
15
+ '/api/courses',
16
+ course: params
17
+ )
18
+ end
19
+
20
+ def delete_from_quiz_api(params:, token:)
21
+ client(token: token).delete(
22
+ "/api/courses/#{params[:canvas_id]}"
23
+ )
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module QuizApiClient
2
- VERSION = '4.3.0'.freeze
2
+ VERSION = '4.4.0'.freeze
3
3
  end
@@ -22,6 +22,10 @@ module QuizApiClient
22
22
  @_config ||= QuizApiClient::Config.new
23
23
  end
24
24
 
25
+ def courses_service
26
+ @_courses_service ||= Services::CoursesService.new(config)
27
+ end
28
+
25
29
  def jwt_service
26
30
  @_jwt_service ||= QuizApiClient::Services::JwtService.new(config)
27
31
  end
@@ -114,6 +118,7 @@ require 'quiz_api_client/http_request/metrics'
114
118
  require 'quiz_api_client/services/jwt_service'
115
119
  require 'quiz_api_client/services/base_api_service'
116
120
 
121
+ require 'quiz_api_client/services/courses_service'
117
122
  require 'quiz_api_client/services/interaction_types_service'
118
123
  require 'quiz_api_client/services/item_analyses_service'
119
124
  require 'quiz_api_client/services/items_service'
@@ -51,6 +51,13 @@ describe QuizApiClient do
51
51
  end
52
52
  end
53
53
 
54
+ describe '#courses_service' do
55
+ it 'creates the service' do
56
+ expect(QuizApiClient::Services::CoursesService).to receive(:new).with(subject.config)
57
+ subject.courses_service
58
+ end
59
+ end
60
+
54
61
  describe '#quizzes_service' do
55
62
  it 'should create the service' do
56
63
  expect(QuizApiClient::Services::QuizzesService).to receive(:new).with(subject.config)
@@ -0,0 +1,59 @@
1
+ describe QuizApiClient::Services::CoursesService do
2
+ let(:host) { 'api.host' }
3
+ let(:config) { QuizApiClient::Config.new { |c| c.host = host } }
4
+ let(:subject) { described_class.new(config) }
5
+
6
+ describe '#create' do
7
+ let(:params) do
8
+ {
9
+ title: 'foo',
10
+ canvas_id: 2,
11
+ is_blueprint: true
12
+ }
13
+ end
14
+
15
+ let(:response) do
16
+ {
17
+ 'id' => '4',
18
+ 'title' => 'foo',
19
+ 'canvas_id' => '2',
20
+ 'is_blueprint' => true,
21
+ 'created_at' => '2022-06-22T18:59:27.577Z',
22
+ 'updated_at' => '2022-06-22T18:59:27.577Z'
23
+ }
24
+ end
25
+
26
+ let(:expected_url) { "https://#{host}/api/courses" }
27
+
28
+ before do
29
+ stub_request(:post, expected_url)
30
+ .with(body: { course: params }.to_json)
31
+ .to_return(
32
+ status: 201,
33
+ body: response.to_json,
34
+ headers: { 'Content-Type' => 'application/json' }
35
+ )
36
+ end
37
+
38
+ it 'posts to the correct endpoint and returns the response' do
39
+ expect(
40
+ subject.create(params: params, token: 'token').parsed_response
41
+ ).to eq(response)
42
+ end
43
+ end
44
+
45
+ describe '#destroy' do
46
+ let(:params) { { canvas_id: 1 } }
47
+ let(:expected_url) { "https://#{host}/api/courses/1" }
48
+
49
+ before do
50
+ stub_request(:delete, expected_url).to_return(status: 204)
51
+ end
52
+
53
+ it 'deletes to the correct endpoint and returns the response' do
54
+ response = subject.destroy(params: params, token: 'token')
55
+ expect(response.code).to eq 204
56
+ expect(response.body).to be_nil
57
+ end
58
+ end
59
+ 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.3.0
4
+ version: 4.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Slaughter
@@ -11,10 +11,10 @@ authors:
11
11
  - Michael Hargiss
12
12
  - Robin Kuss
13
13
  - Ryan Taylor
14
- autorequire:
14
+ autorequire:
15
15
  bindir: exe
16
16
  cert_chain: []
17
- date: 2022-06-17 00:00:00.000000000 Z
17
+ date: 2022-06-23 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: httparty
@@ -184,7 +184,7 @@ dependencies:
184
184
  - - ">="
185
185
  - !ruby/object:Gem::Version
186
186
  version: '0'
187
- description:
187
+ description:
188
188
  email:
189
189
  - aslaughter@instructure.com
190
190
  - jhiggins@instructure.com
@@ -206,6 +206,7 @@ files:
206
206
  - lib/quiz_api_client/http_request/metrics.rb
207
207
  - lib/quiz_api_client/json_formatter.rb
208
208
  - lib/quiz_api_client/services/base_api_service.rb
209
+ - lib/quiz_api_client/services/courses_service.rb
209
210
  - lib/quiz_api_client/services/interaction_types_service.rb
210
211
  - lib/quiz_api_client/services/item_analyses_service.rb
211
212
  - lib/quiz_api_client/services/items_service.rb
@@ -257,6 +258,7 @@ files:
257
258
  - spec/quiz_api_client/http_request/metrics_spec.rb
258
259
  - spec/quiz_api_client_spec.rb
259
260
  - spec/services/base_api_service_spec.rb
261
+ - spec/services/courses_service_spec.rb
260
262
  - spec/services/interaction_types_service_spec.rb
261
263
  - spec/services/item_analyses_service_spec.rb
262
264
  - spec/services/items_service_spec.rb
@@ -279,10 +281,10 @@ files:
279
281
  - spec/spec_helper.rb
280
282
  - spec/support/pact_config.rb
281
283
  - spec/support/pact_helper.rb
282
- homepage:
284
+ homepage:
283
285
  licenses: []
284
286
  metadata: {}
285
- post_install_message:
287
+ post_install_message:
286
288
  rdoc_options: []
287
289
  require_paths:
288
290
  - lib
@@ -297,8 +299,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
297
299
  - !ruby/object:Gem::Version
298
300
  version: '0'
299
301
  requirements: []
300
- rubygems_version: 3.1.4
301
- signing_key:
302
+ rubygems_version: 3.1.6
303
+ signing_key:
302
304
  specification_version: 4
303
305
  summary: Ruby client for quiz_api
304
306
  test_files:
@@ -332,6 +334,7 @@ test_files:
332
334
  - spec/quiz_api_client/http_request/metrics_spec.rb
333
335
  - spec/quiz_api_client_spec.rb
334
336
  - spec/services/base_api_service_spec.rb
337
+ - spec/services/courses_service_spec.rb
335
338
  - spec/services/interaction_types_service_spec.rb
336
339
  - spec/services/item_analyses_service_spec.rb
337
340
  - spec/services/items_service_spec.rb