quiz_api_client 2.7.0 → 3.2.0

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
  SHA256:
3
- metadata.gz: c62d6c7422e6e7955a1d2ff49b5129adfae616cd48e20586226f8793361cf5d6
4
- data.tar.gz: 3109b9e79d25dad954ff33ce31be7a6fab7cb78b10ad11865267ff55e52efd11
3
+ metadata.gz: d21ef77c677faced1f5decda500ca2e4e32dbd5e163e3a313c3d68f699de6f38
4
+ data.tar.gz: 1614220681706baad9693a638ff0bb9d27622708af4e82ff7a570a47617a1fe5
5
5
  SHA512:
6
- metadata.gz: e8d52fbd491cae973d46862f1ea33efc844c12eacf6308c7a5eff9d711a65a9a09769f0f19eec2844696789862ce68bb0859a2ae5cb8b04dbc56401593539407
7
- data.tar.gz: 8c989448eab56f161e2a4dfacf6d68f12f7ad4244410e43478374f5cff60942b397312d4b11527e4a6546cc42c8632c93d43575e92db6f6788bd31bec0b451b8
6
+ metadata.gz: 2e618dca3ed741dddf0d325d7ab77c418fcd9c0a7088b3c4613d137f873efc5b5829f9a1011d57de42dea88edfefe5203debf4c512b5f84e7699b1d5b5594271
7
+ data.tar.gz: b20220626d0cc582a0a72fb4bdab8d12a81da5884438357b98695a493e1b4c6c1ef225413430a5b2a7a4ac67cd9b9b1956ff47c7ecdfede673ef4feb1d6c61cd
data/.dockerignore CHANGED
@@ -1,4 +1,7 @@
1
+ /.gitignore
2
+ /.ruby-version
1
3
  /coverage
2
4
  /docker-compose.*
3
5
  /Dockerfile*
6
+ /Gemfile.lock
4
7
  /**/*.gem
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
+ /.ruby-version
3
4
  /_yardoc/
4
5
  /coverage/
5
6
  /doc/
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
+ --require spec_helper
1
2
  --format documentation
2
3
  --color
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.3
2
+ TargetRubyVersion: 2.4
3
3
 
4
4
  Metrics/ClassLength:
5
5
  Max: 200 # Default: 100
@@ -16,6 +16,9 @@ Metrics/BlockLength:
16
16
  - quiz_api_client.gemspec
17
17
  - spec/**/*.rb
18
18
 
19
+ Naming/MemoizedInstanceVariableName:
20
+ EnforcedStyleForLeadingUnderscores: required
21
+
19
22
  Layout/AlignParameters:
20
23
  # Alignment of parameters in multi-line method calls.
21
24
  #
@@ -29,7 +32,7 @@ Layout/AlignParameters:
29
32
  Layout/CaseIndentation:
30
33
  EnforcedStyle: end
31
34
 
32
- Lint/EndAlignment:
35
+ Layout/EndAlignment:
33
36
  EnforcedStyleAlignWith: variable
34
37
 
35
38
  Style/ClassAndModuleChildren:
@@ -59,13 +62,11 @@ Style/Documentation:
59
62
  Enabled: false
60
63
 
61
64
  Style/FrozenStringLiteralComment:
62
- # `when_needed` will add the frozen string literal comment to files
63
- # only when the `TargetRubyVersion` is set to 2.3+.
64
65
  # `always` will always add the frozen string literal comment to a file
65
66
  # regardless of the Ruby version or if `freeze` or `<<` are called on a
66
67
  # string literal. If you run code against multiple versions of Ruby, it is
67
68
  # possible that this will create errors in Ruby 2.3.0+.
68
69
  #
69
70
  # See: https://wyeworks.com/blog/2015/12/1/immutable-strings-in-ruby-2-dot-3
70
- EnforcedStyle: when_needed
71
+ EnforcedStyle: always
71
72
  Enabled: false
data/Dockerfile CHANGED
@@ -1,20 +1,11 @@
1
1
  FROM instructure/rvm
2
2
 
3
- WORKDIR /app
3
+ RUN mkdir -p coverage log pacts
4
4
 
5
- COPY quiz_api_client.gemspec Gemfile /app/
6
- COPY lib/quiz_api_client/version.rb /app/lib/quiz_api_client/version.rb
7
-
8
- USER root
9
- RUN chown -R docker:docker /app
10
-
11
- USER docker
5
+ COPY --chown=docker:docker quiz_api_client.gemspec Gemfile ./
6
+ COPY --chown=docker:docker lib/quiz_api_client/version.rb lib/quiz_api_client/version.rb
12
7
  RUN /bin/bash -l -c "rvm-exec 2.4 bundle install --jobs 5"
13
- COPY . /app
14
- RUN rm -f Gemfile.lock
15
8
 
16
- USER root
17
- RUN chown -R docker:docker /app
18
- USER docker
9
+ COPY --chown=docker:docker . .
19
10
 
20
11
  CMD /bin/bash -l -c "rvm-exec 2.4 bundle exec rspec"
data/Jenkinsfile ADDED
@@ -0,0 +1,86 @@
1
+ def buildMatrix = ['2.4', '2.5', '2.6'].collectEntries { ruby ->
2
+ ["Ruby ${ruby}": {
3
+ sh """
4
+ docker-compose run --name "${env.BUILD_ID}-ruby-${ruby}" \
5
+ app /bin/bash -lc "rvm-exec ${ruby} bundle install --jobs 5 && rvm-exec ${ruby} bundle exec rspec"
6
+ """
7
+ }]
8
+ }
9
+
10
+ pipeline {
11
+ agent {
12
+ label 'docker'
13
+ }
14
+ options {
15
+ buildDiscarder(logRotator(numToKeepStr: '50'))
16
+ timeout(time: 20, unit: 'MINUTES')
17
+ }
18
+ stages {
19
+ stage('Build') {
20
+ steps {
21
+ sh 'docker-compose build --pull'
22
+ }
23
+ }
24
+ stage('Lint') {
25
+ steps {
26
+ sh '''
27
+ docker-compose run --rm app /bin/bash -lc \
28
+ "rvm-exec 2.4 bundle exec rubocop --fail-level autocorrect"
29
+ '''
30
+ }
31
+ }
32
+ stage('Unit Tests') {
33
+ steps { script { parallel buildMatrix } }
34
+ }
35
+ stage('Contract Tests') {
36
+ steps {
37
+ sh 'docker-compose run app /bin/bash -l -c "rvm-exec 2.4 bundle exec rspec -t pact"'
38
+ }
39
+ }
40
+ stage ('Publish') {
41
+ when { environment name: "GERRIT_EVENT_TYPE", value: "change-merged"}
42
+ environment {
43
+ PACT_BROKER_PASSWORD = credentials('pact_broker_password')
44
+ JENKINS_URL = "${env.JENKINS_URL}"
45
+ PACT_CONSUMER_TAG = 'master'
46
+ PACT_BROKER_USERNAME = 'quizzes'
47
+ PACT_BROKER_HOST = 'inst-pact-broker.inseng.net'
48
+ }
49
+ steps {
50
+ script {
51
+ sh '''
52
+ sha="$(git rev-parse --short HEAD)"
53
+
54
+ docker-compose run --rm \
55
+ -e JENKINS_URL="${JENKINS_URL}" \
56
+ -e PACT_BROKER_HOST="${PACT_BROKER_HOST}" \
57
+ -e PACT_BROKER_USERNAME="${PACT_BROKER_USERNAME}" \
58
+ -e PACT_BROKER_PASSWORD="${PACT_BROKER_PASSWORD}" \
59
+ -e PACT_CONSUMER_TAG="${PACT_CONSUMER_TAG}" \
60
+ -e SHA="${sha}" \
61
+ app /bin/bash -l -c "rvm-exec 2.4 bundle exec rake broker:pact:publish:jenkins_post_merge"
62
+ '''
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ post {
69
+ success {
70
+ sh "docker cp \"${env.BUILD_ID}-ruby-2.4:/usr/src/app/coverage\" ."
71
+ publishHTML target: [
72
+ allowMissing: false,
73
+ alwaysLinkToLastBuild: false,
74
+ keepAll: true,
75
+ reportDir: "coverage",
76
+ reportFiles: 'index.html',
77
+ reportName: 'Coverage Report'
78
+ ]
79
+ }
80
+ cleanup { // Always runs after all other post conditions=
81
+ sh 'docker-compose kill'
82
+ sh 'docker-compose rm -f'
83
+ sh 'docker images -qf "dangling=true" | xargs docker rmi -f &>/dev/null'
84
+ }
85
+ }
86
+ }
data/Rakefile CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'pact_broker/client/tasks'
3
3
  require 'rspec/core/rake_task'
4
- require_relative './spec/contracts/pact_config'
4
+ require_relative './spec/support/pact_config'
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
@@ -14,7 +14,7 @@ function print_results() {
14
14
  docker cp contracts:/usr/src/app/pacts . &> /dev/null
15
15
  docker rm -f contracts &> /dev/null
16
16
 
17
- docker-compose rm -fv contracts-testrunner &> /dev/null
17
+ docker-compose rm -fv app &> /dev/null
18
18
  }
19
19
  trap print_results INT TERM EXIT
20
20
  set -e
@@ -22,6 +22,5 @@ set -e
22
22
  rm -rf pacts
23
23
  sha="$(git rev-parse --short HEAD)"
24
24
 
25
-
26
- docker-compose run --name contracts -e SHA="${sha}" contracts-testrunner bash -c \
27
- "bundle && bundle exec rspec spec/contracts && bundle exec rake broker:pact:publish:local"
25
+ docker-compose run --name contracts -e SHA="${sha}" app bash -l -c \
26
+ "bundle && bundle exec rspec --tag pact && bundle exec rake broker:pact:publish:local"
@@ -1,19 +1,11 @@
1
- version: '2'
1
+ version: '3.5'
2
2
 
3
3
  services:
4
- testrunner:
5
- volumes:
6
- - .:/app
7
- - bundler-config:/home/docker/.rvm/gems/ruby-2.4.0
8
-
9
- contracts-testrunner:
10
- #external_links: # linux
11
- # - dory_dinghy_http_proxy:pact-broker.docker # linux
4
+ app:
5
+ # This port doesn't exist, but doing this tricks Dory proxy into hooking up
6
+ # the container so it can actually talk to the Pact Broker.
7
+ expose: [8080]
8
+ external_links:
9
+ - ${PROXY_CONTAINER:-dinghy_http_proxy}:pact-broker.docker
12
10
  volumes:
13
11
  - .:/usr/src/app
14
- #- api-logs:/usr/src/app/log # linux:fs
15
- - bundler-config:/home/docker/.rvm/gems/ruby-2.4.0
16
-
17
- volumes:
18
- bundler-config: {}
19
- api-logs: {}
data/docker-compose.yml CHANGED
@@ -1,13 +1,8 @@
1
- version: '2'
1
+ version: '3.5'
2
2
 
3
3
  services:
4
- testrunner:
4
+ app:
5
5
  build: .
6
-
7
- contracts-testrunner:
8
- build:
9
- context: .
10
- dockerfile: Dockerfile.contracts
11
6
  volumes:
12
7
  - pacts:/usr/src/app/pacts
13
8
 
@@ -23,6 +23,7 @@ module QuizApiClient
23
23
 
24
24
  def get(path, all: false, query: {})
25
25
  return make_request :get, url_for(path), query: query unless all
26
+
26
27
  make_paginated_request :get, url_for(path), query: query
27
28
  end
28
29
 
@@ -91,6 +92,7 @@ module QuizApiClient
91
92
  until request_url.nil?
92
93
  resp = make_request(method, request_url, request_options)
93
94
  raise RequestFailed, "#{url} responded #{resp.body} (#{resp.code})" unless resp.code == 200
95
+
94
96
  entities.concat(resp.parsed_response)
95
97
  request_url, request_options = next_page(resp, url, options)
96
98
  end
@@ -119,6 +121,7 @@ module QuizApiClient
119
121
 
120
122
  def next_page_link(response, options)
121
123
  return if response.headers['link'].blank?
124
+
122
125
  links = LinkHeader.parse(response.headers['link']).links
123
126
  next_link = links.find { |link| link['rel'] == 'next' }
124
127
  [next_link.href, options] if next_link
@@ -2,6 +2,7 @@ module QuizApiClient::Services
2
2
  class ItemAnalysesService < BaseApiService
3
3
  def list(params:, token: nil, all: false)
4
4
  raise 'Quiz Id Required' unless params.key?(:quiz_id)
5
+
5
6
  client(token: token).get(
6
7
  "/api/quizzes/#{params[:quiz_id]}/stats/item_analyses",
7
8
  all: all
@@ -10,6 +11,7 @@ module QuizApiClient::Services
10
11
 
11
12
  def get(params:, token: nil)
12
13
  raise 'Quiz Id and Item Id are Required' unless params.key?(:id) && params.key?(:quiz_id)
14
+
13
15
  client(token: token).get(
14
16
  "/api/quizzes/#{params[:quiz_id]}/stats/item_analyses/#{params[:id]}"
15
17
  )
@@ -2,6 +2,7 @@ module QuizApiClient::Services
2
2
  class ItemsService < BaseApiService
3
3
  def create(params:, token: nil)
4
4
  raise 'Quiz Id Required' unless params && params[:quiz_id]
5
+
5
6
  post_to_quiz_api(params: params, token: token)
6
7
  end
7
8
 
@@ -2,16 +2,26 @@ module QuizApiClient::Services
2
2
  class QtiImportsService < BaseApiService
3
3
  def create(params:, token: nil)
4
4
  raise 'Quiz Id Required' unless params && params[:quiz_id]
5
- post_to_quiz_api(params: params, token: token)
6
- end
7
-
8
- private
9
5
 
10
- def post_to_quiz_api(params:, token:)
11
6
  client(token: token).post(
12
7
  "/api/quizzes/#{params[:quiz_id]}/qti_imports",
13
8
  qti_import: params
14
9
  )
15
10
  end
11
+
12
+ def banks(params:, token: nil)
13
+ client(token: token).post(
14
+ '/api/qti_imports/banks',
15
+ qti_import: params
16
+ )
17
+ end
18
+
19
+ def get_imported_consumer_settings(params:, token: nil)
20
+ raise 'Quiz Id Required' unless params && params[:quiz_id]
21
+
22
+ client(token: token).get(
23
+ "/api/quizzes/#{params[:quiz_id]}/qti_imports/imported_consumer_settings"
24
+ )
25
+ end
16
26
  end
17
27
  end
@@ -2,6 +2,7 @@ module QuizApiClient::Services
2
2
  class QuizAnalysesService < BaseApiService
3
3
  def get(params:, token: nil)
4
4
  raise 'Quiz Id Required' unless params.key?(:quiz_id)
5
+
5
6
  get_from_quiz_api(params: params, token: token)
6
7
  end
7
8
 
@@ -2,6 +2,7 @@ module QuizApiClient::Services
2
2
  class QuizCloneJobService < BaseApiService
3
3
  def show(params:, token: nil)
4
4
  raise 'Quiz Clone Job Id Required' unless params && params[:id]
5
+
5
6
  get_from_quiz_api(params: params, token: token)
6
7
  end
7
8
 
@@ -2,14 +2,23 @@ module QuizApiClient::Services
2
2
  class QuizEntriesService < BaseApiService
3
3
  def create(params:, token: nil)
4
4
  raise 'Quiz Id Required' unless params && params[:id]
5
+
5
6
  post_to_quiz_api(params: params, token: token)
6
7
  end
7
8
 
8
9
  def list(params:, token: nil, all: false)
9
10
  raise 'Quiz Id Required' unless params && params[:id]
11
+
10
12
  get_from_quiz_api(params: params, token: token, all: all)
11
13
  end
12
14
 
15
+ def destroy(params:, token: nil)
16
+ raise 'Quiz Id Required' unless params && params[:quiz_id]
17
+ raise 'Item Id Required' unless params && params[:id]
18
+
19
+ delete_from_quiz_api(params, token)
20
+ end
21
+
13
22
  private
14
23
 
15
24
  def post_to_quiz_api(params:, token:)
@@ -25,5 +34,11 @@ module QuizApiClient::Services
25
34
  all: all
26
35
  )
27
36
  end
37
+
38
+ def delete_from_quiz_api(params, token)
39
+ client(token: token).delete(
40
+ "/api/quizzes/#{params[:quiz_id]}/quiz_entries/#{params[:id]}"
41
+ )
42
+ end
28
43
  end
29
44
  end
@@ -2,6 +2,7 @@ module QuizApiClient::Services
2
2
  class QuizSessionEventsService < BaseApiService
3
3
  def list(params:, token: nil, all: false)
4
4
  raise 'Quiz Session Id Required' unless params.key?(:quiz_session_id)
5
+
5
6
  get_from_quiz_api(params: params, token: token, all: all)
6
7
  end
7
8
 
@@ -2,6 +2,7 @@ module QuizApiClient::Services
2
2
  class QuizSessionResultService < BaseApiService
3
3
  def show(params:, token: nil)
4
4
  raise 'Quiz Session Result Id Required' unless params && params[:id]
5
+
5
6
  get_from_quiz_api(params: params, token: token)
6
7
  end
7
8
 
@@ -6,6 +6,7 @@ module QuizApiClient::Services
6
6
 
7
7
  def show(params:, token: nil)
8
8
  raise 'Quiz Session Id Required' unless params && params[:id]
9
+
9
10
  get_from_quiz_api(params: params, token: token)
10
11
  end
11
12
 
@@ -1,7 +1,18 @@
1
1
  module QuizApiClient::Services
2
2
  class QuizSessionsService < BaseApiService
3
+ def list(params:, token: nil)
4
+ raise 'Quiz Id Required' unless params && params[:quiz_id]
5
+ raise 'Quiz Session Ids Required' unless params && params[:ids]
6
+
7
+ client(token: token).get(
8
+ "/api/quizzes/#{params[:quiz_id]}/quiz_sessions",
9
+ query: params[:ids].to_query('ids')
10
+ )
11
+ end
12
+
3
13
  def create(params:, token: nil)
4
14
  raise 'Quiz Id Required' unless params && params[:quiz_id]
15
+
5
16
  post_to_quiz_api(params: params, token: token)
6
17
  end
7
18
 
@@ -3,6 +3,7 @@ module QuizApiClient::Services
3
3
  def list(params:, token: nil, all: false)
4
4
  raise 'QuizSession Id Required' unless params && params[:quiz_session_id]
5
5
  raise 'QuizSessionResult Id Required' unless params && params[:quiz_session_result_id]
6
+
6
7
  get_from_quiz_api(params: params, token: token, all: all)
7
8
  end
8
9
 
@@ -2,6 +2,7 @@ module QuizApiClient::Services
2
2
  class SessionItemsService < BaseApiService
3
3
  def list(params:, token: nil, all: false)
4
4
  raise 'QuizSession Id Required' unless params && params[:quiz_session_id]
5
+
5
6
  get_from_quiz_api(params: params, token: token, all: all)
6
7
  end
7
8
 
@@ -2,6 +2,7 @@ module QuizApiClient::Services
2
2
  class SharedBanks < BaseApiService
3
3
  def list(params:, token: nil, all: false)
4
4
  raise 'Bank Id Required' unless params && params[:bank_id]
5
+
5
6
  client(token: token).get(
6
7
  "/api/banks/#{params[:bank_id]}/shared_banks",
7
8
  all: all
@@ -10,6 +11,7 @@ module QuizApiClient::Services
10
11
 
11
12
  def create(params:, token: nil)
12
13
  raise 'Bank Id Required' unless params && params[:bank_id]
14
+
13
15
  client(token: token).post(
14
16
  "/api/banks/#{params[:bank_id]}/shared_banks",
15
17
  params
@@ -19,6 +21,7 @@ module QuizApiClient::Services
19
21
  def update(params:, token: nil)
20
22
  raise 'Bank Id Required' unless params && params[:bank_id]
21
23
  raise 'Shared Bank Id Required' unless params && params[:shared_bank_id]
24
+
22
25
  shared_bank_id = params.delete(:shared_bank_id)
23
26
  client(token: token).put(
24
27
  "/api/banks/#{params[:bank_id]}/shared_banks/#{shared_bank_id}",
@@ -1,3 +1,3 @@
1
1
  module QuizApiClient
2
- VERSION = '2.7.0'.freeze
2
+ VERSION = '3.2.0'.freeze
3
3
  end
@@ -1,4 +1,4 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'quiz_api_client/version'
4
4
 
@@ -40,18 +40,17 @@ Gem::Specification.new do |spec|
40
40
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
41
41
  spec.require_paths = ['lib']
42
42
 
43
- spec.required_ruby_version = '>= 2.3'
43
+ spec.required_ruby_version = '>= 2.4'
44
44
 
45
- spec.add_dependency 'httparty', '~> 0.14.0'
46
- spec.add_dependency 'jwt', '>= 1.5', '< 3.0'
45
+ spec.add_dependency 'httparty', '~> 0.17'
46
+ spec.add_dependency 'jwt', '~> 2.2'
47
47
  spec.add_dependency 'link_header', '~> 0.0'
48
48
 
49
- spec.add_development_dependency 'bundler', '~> 1.15'
50
- spec.add_development_dependency 'pact', '~> 1.20.1'
51
- spec.add_development_dependency 'pact_broker-client', '~> 1.14.0'
52
- spec.add_development_dependency 'rake', '~> 12.0'
53
- spec.add_development_dependency 'rspec', '~> 3.7'
54
- spec.add_development_dependency 'rubocop', '~> 0.52.1'
49
+ spec.add_development_dependency 'pact', '~> 1.41'
50
+ spec.add_development_dependency 'pact_broker-client', '~> 1.19'
51
+ spec.add_development_dependency 'rake', '~> 12.3'
52
+ spec.add_development_dependency 'rspec', '~> 3.8'
53
+ spec.add_development_dependency 'rubocop', '~> 0.74.0'
55
54
  spec.add_development_dependency 'simplecov'
56
55
  spec.add_development_dependency 'webmock'
57
56
  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: 2.7.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wang
@@ -19,7 +19,7 @@ authors:
19
19
  autorequire:
20
20
  bindir: exe
21
21
  cert_chain: []
22
- date: 2018-10-15 00:00:00.000000000 Z
22
+ date: 2021-04-19 00:00:00.000000000 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: httparty
@@ -27,34 +27,28 @@ dependencies:
27
27
  requirements:
28
28
  - - "~>"
29
29
  - !ruby/object:Gem::Version
30
- version: 0.14.0
30
+ version: '0.17'
31
31
  type: :runtime
32
32
  prerelease: false
33
33
  version_requirements: !ruby/object:Gem::Requirement
34
34
  requirements:
35
35
  - - "~>"
36
36
  - !ruby/object:Gem::Version
37
- version: 0.14.0
37
+ version: '0.17'
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: jwt
40
40
  requirement: !ruby/object:Gem::Requirement
41
41
  requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: '1.5'
45
- - - "<"
42
+ - - "~>"
46
43
  - !ruby/object:Gem::Version
47
- version: '3.0'
44
+ version: '2.2'
48
45
  type: :runtime
49
46
  prerelease: false
50
47
  version_requirements: !ruby/object:Gem::Requirement
51
48
  requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '1.5'
55
- - - "<"
49
+ - - "~>"
56
50
  - !ruby/object:Gem::Version
57
- version: '3.0'
51
+ version: '2.2'
58
52
  - !ruby/object:Gem::Dependency
59
53
  name: link_header
60
54
  requirement: !ruby/object:Gem::Requirement
@@ -69,90 +63,76 @@ dependencies:
69
63
  - - "~>"
70
64
  - !ruby/object:Gem::Version
71
65
  version: '0.0'
72
- - !ruby/object:Gem::Dependency
73
- name: bundler
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - "~>"
77
- - !ruby/object:Gem::Version
78
- version: '1.15'
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - "~>"
84
- - !ruby/object:Gem::Version
85
- version: '1.15'
86
66
  - !ruby/object:Gem::Dependency
87
67
  name: pact
88
68
  requirement: !ruby/object:Gem::Requirement
89
69
  requirements:
90
70
  - - "~>"
91
71
  - !ruby/object:Gem::Version
92
- version: 1.20.1
72
+ version: '1.41'
93
73
  type: :development
94
74
  prerelease: false
95
75
  version_requirements: !ruby/object:Gem::Requirement
96
76
  requirements:
97
77
  - - "~>"
98
78
  - !ruby/object:Gem::Version
99
- version: 1.20.1
79
+ version: '1.41'
100
80
  - !ruby/object:Gem::Dependency
101
81
  name: pact_broker-client
102
82
  requirement: !ruby/object:Gem::Requirement
103
83
  requirements:
104
84
  - - "~>"
105
85
  - !ruby/object:Gem::Version
106
- version: 1.14.0
86
+ version: '1.19'
107
87
  type: :development
108
88
  prerelease: false
109
89
  version_requirements: !ruby/object:Gem::Requirement
110
90
  requirements:
111
91
  - - "~>"
112
92
  - !ruby/object:Gem::Version
113
- version: 1.14.0
93
+ version: '1.19'
114
94
  - !ruby/object:Gem::Dependency
115
95
  name: rake
116
96
  requirement: !ruby/object:Gem::Requirement
117
97
  requirements:
118
98
  - - "~>"
119
99
  - !ruby/object:Gem::Version
120
- version: '12.0'
100
+ version: '12.3'
121
101
  type: :development
122
102
  prerelease: false
123
103
  version_requirements: !ruby/object:Gem::Requirement
124
104
  requirements:
125
105
  - - "~>"
126
106
  - !ruby/object:Gem::Version
127
- version: '12.0'
107
+ version: '12.3'
128
108
  - !ruby/object:Gem::Dependency
129
109
  name: rspec
130
110
  requirement: !ruby/object:Gem::Requirement
131
111
  requirements:
132
112
  - - "~>"
133
113
  - !ruby/object:Gem::Version
134
- version: '3.7'
114
+ version: '3.8'
135
115
  type: :development
136
116
  prerelease: false
137
117
  version_requirements: !ruby/object:Gem::Requirement
138
118
  requirements:
139
119
  - - "~>"
140
120
  - !ruby/object:Gem::Version
141
- version: '3.7'
121
+ version: '3.8'
142
122
  - !ruby/object:Gem::Dependency
143
123
  name: rubocop
144
124
  requirement: !ruby/object:Gem::Requirement
145
125
  requirements:
146
126
  - - "~>"
147
127
  - !ruby/object:Gem::Version
148
- version: 0.52.1
128
+ version: 0.74.0
149
129
  type: :development
150
130
  prerelease: false
151
131
  version_requirements: !ruby/object:Gem::Requirement
152
132
  requirements:
153
133
  - - "~>"
154
134
  - !ruby/object:Gem::Version
155
- version: 0.52.1
135
+ version: 0.74.0
156
136
  - !ruby/object:Gem::Dependency
157
137
  name: simplecov
158
138
  requirement: !ruby/object:Gem::Requirement
@@ -205,14 +185,13 @@ files:
205
185
  - ".rspec"
206
186
  - ".rubocop.yml"
207
187
  - Dockerfile
208
- - Dockerfile.contracts
209
188
  - Gemfile
189
+ - Jenkinsfile
210
190
  - README.md
211
191
  - Rakefile
212
192
  - bin/console
213
193
  - bin/contracts-generate
214
194
  - bin/setup
215
- - build.sh
216
195
  - docker-compose.dev.override.yml
217
196
  - docker-compose.yml
218
197
  - lib/quiz_api_client.rb
@@ -250,15 +229,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
250
229
  requirements:
251
230
  - - ">="
252
231
  - !ruby/object:Gem::Version
253
- version: '2.3'
232
+ version: '2.4'
254
233
  required_rubygems_version: !ruby/object:Gem::Requirement
255
234
  requirements:
256
235
  - - ">="
257
236
  - !ruby/object:Gem::Version
258
237
  version: '0'
259
238
  requirements: []
260
- rubyforge_project:
261
- rubygems_version: 2.7.6
239
+ rubygems_version: 3.0.6
262
240
  signing_key:
263
241
  specification_version: 4
264
242
  summary: Ruby client for quiz_api
data/Dockerfile.contracts DELETED
@@ -1,19 +0,0 @@
1
- FROM instructure/ruby:2.3
2
-
3
- USER root
4
-
5
- ENV APP_HOME /usr/src/app
6
- RUN mkdir -p $APP_HOME/log
7
- RUN mkdir -p $APP_HOME/pacts
8
-
9
- COPY quiz_api_client.gemspec Gemfile $APP_HOME/
10
- COPY lib/quiz_api_client/version.rb $APP_HOME/lib/quiz_api_client/version.rb
11
-
12
- USER docker
13
- RUN bundle install --quiet --jobs 8
14
-
15
- USER root
16
- COPY . $APP_HOME
17
- RUN chown -R docker:docker $APP_HOME
18
-
19
- USER docker
data/build.sh DELETED
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- set -ex
4
-
5
- function publish_pact_file_to_pact_broker()
6
- {
7
- echo "Publishing pact file to Pact Broker..."
8
-
9
- sha="$(git rev-parse --short HEAD)"
10
-
11
- docker-compose run --rm \
12
- -e JENKINS_URL="${JENKINS_URL}" \
13
- -e PACT_BROKER_HOST="${PACT_BROKER_HOST}" \
14
- -e PACT_BROKER_USERNAME="${PACT_BROKER_USERNAME}" \
15
- -e PACT_BROKER_PASSWORD="${PACT_BROKER_PASSWORD}" \
16
- -e PACT_CONSUMER_TAG="${PACT_CONSUMER_TAG}" \
17
- -e SHA="${sha}" \
18
- contracts-testrunner bundle exec rake broker:pact:publish:jenkins_post_merge
19
- }
20
-
21
- function cleanup() {
22
- exit_code=$?
23
- set +e
24
- docker cp coverage:/app/coverage .
25
- docker-compose kill
26
- docker-compose rm -f
27
- exit $exit_code
28
- }
29
- trap cleanup INT TERM EXIT
30
-
31
- docker-compose build --pull
32
-
33
- echo "Running Rubocop..."
34
- docker-compose run --rm testrunner /bin/bash -lc \
35
- "rvm-exec 2.4 bundle exec rubocop --fail-level autocorrect"
36
-
37
- echo "Running test suite..."
38
- docker-compose run --name coverage testrunner $@
39
-
40
- echo
41
- echo "Running contract tests..."
42
- docker-compose run --name contracts -T contracts-testrunner bundle exec rspec spec/contracts
43
- docker cp contracts:/usr/src/app/pacts .
44
- docker cp contracts:/usr/src/app/log .
45
- echo
46
-
47
- if [[ "${GERRIT_EVENT_TYPE}" == "change-merged" ]]; then
48
- publish_pact_file_to_pact_broker
49
- fi