quiz_api_client 2.7.0 → 3.2.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: 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