japanda 0.1.4 → 0.1.5

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
- SHA1:
3
- metadata.gz: c88d5e552e2c67042dd5da76188c48ffefc2f8b7
4
- data.tar.gz: b871098f94298c6ad6c0acb22c7d12a01a6bbd25
2
+ SHA256:
3
+ metadata.gz: 6d62c0b18d1c9844e0c9a62343edc2d681412c3bb453a7028d1c33ae47bfddac
4
+ data.tar.gz: 34bcfd1ac14c12c5fe61889bfd2c567edf6fcbf816fe5bce6f7d025154ced604
5
5
  SHA512:
6
- metadata.gz: cdbcc9424cd02a9923fed5121c7d74638888ab9cb37e25e7286f1ecaa0b70a9c46109ee688fdcfa149c28f81bbccca3eba977d613f8d979a1bad148c692c8012
7
- data.tar.gz: e4c24a8f9858ebd769ce85723066772e46be305456020c90d6ebdba950cab3f5f53f5753d9569b8c87cdab79d27742e6d6bdb15100824171bea160757533414c
6
+ metadata.gz: 38640dbdb09ffcf289130b8791ee5a6be3be255aa41b15359b4398efee7e51134e2879fecffda211aba59eacb1eccc56622fdae264d320b5036b9a0a9ccb1022
7
+ data.tar.gz: 70e93dbb2e8563b1724c36d9a9fc4eaef3f263a3c3ddfaae6c3ecefc09a253cb427f8c802e791f3a85987320eb4c53463f0594b4be2a4506525e1376909915b0
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /spec/reports/
8
8
  .env
9
9
  /tmp/
10
+ *.iml
data/.rspec CHANGED
@@ -1,2 +1,4 @@
1
+ --format RspecJunitFormatter
2
+ --out junit/rspec.xml
1
3
  --format documentation
2
4
  --color
@@ -0,0 +1 @@
1
+ 2.5.0
@@ -0,0 +1,9 @@
1
+ FROM instructure/ruby:2.5
2
+
3
+ ENV APP_HOME /usr/src/app
4
+
5
+ COPY --chown=docker:docker . $APP_HOME
6
+
7
+ RUN bundle install --quiet --jobs 8
8
+
9
+
@@ -1,53 +1,62 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- japanda (0.1.4)
5
- rest-client
4
+ japanda (0.1.5)
5
+ rest-client (>= 2.1.0)
6
+ rspec_junit_formatter (~> 0.4.1)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
- diff-lcs (1.2.5)
11
- domain_name (0.5.24)
11
+ byebug (11.1.3)
12
+ diff-lcs (1.4.4)
13
+ domain_name (0.5.20190701)
12
14
  unf (>= 0.0.5, < 1.0.0)
13
15
  dotenv (2.0.2)
14
- hashie (2.0.5)
15
- http-cookie (1.0.2)
16
+ hashie (4.0.0)
17
+ http-accept (1.7.0)
18
+ http-cookie (1.0.3)
16
19
  domain_name (~> 0.5)
17
- mime-types (2.6.2)
18
- netrc (0.10.3)
20
+ mime-types (3.3.1)
21
+ mime-types-data (~> 3.2015)
22
+ mime-types-data (3.2020.1104)
23
+ netrc (0.11.0)
19
24
  rake (10.4.2)
20
- rest-client (1.8.0)
25
+ rest-client (2.1.0)
26
+ http-accept (>= 1.7.0, < 2.0)
21
27
  http-cookie (>= 1.0.2, < 2.0)
22
- mime-types (>= 1.16, < 3.0)
23
- netrc (~> 0.7)
24
- rspec (3.3.0)
25
- rspec-core (~> 3.3.0)
26
- rspec-expectations (~> 3.3.0)
27
- rspec-mocks (~> 3.3.0)
28
- rspec-core (3.3.2)
29
- rspec-support (~> 3.3.0)
30
- rspec-expectations (3.3.1)
28
+ mime-types (>= 1.16, < 4.0)
29
+ netrc (~> 0.8)
30
+ rspec (3.5.0)
31
+ rspec-core (~> 3.5.0)
32
+ rspec-expectations (~> 3.5.0)
33
+ rspec-mocks (~> 3.5.0)
34
+ rspec-core (3.5.4)
35
+ rspec-support (~> 3.5.0)
36
+ rspec-expectations (3.5.0)
31
37
  diff-lcs (>= 1.2.0, < 2.0)
32
- rspec-support (~> 3.3.0)
33
- rspec-mocks (3.3.2)
38
+ rspec-support (~> 3.5.0)
39
+ rspec-mocks (3.5.0)
34
40
  diff-lcs (>= 1.2.0, < 2.0)
35
- rspec-support (~> 3.3.0)
36
- rspec-support (3.3.0)
41
+ rspec-support (~> 3.5.0)
42
+ rspec-support (3.5.0)
43
+ rspec_junit_formatter (0.4.1)
44
+ rspec-core (>= 2, < 4, != 2.12.0)
37
45
  unf (0.1.4)
38
46
  unf_ext
39
- unf_ext (0.0.7.1)
47
+ unf_ext (0.0.7.7)
40
48
 
41
49
  PLATFORMS
42
50
  ruby
43
51
 
44
52
  DEPENDENCIES
45
- bundler (>= 1.0.0)
53
+ bundler (~> 1.5)
54
+ byebug
46
55
  dotenv
47
- hashie
56
+ hashie (~> 4.0.0)
48
57
  japanda!
49
- rake (~> 10.0)
50
- rspec
58
+ rake
59
+ rspec (~> 3.5.0)
51
60
 
52
61
  BUNDLED WITH
53
- 1.10.6
62
+ 1.17.3
@@ -0,0 +1,64 @@
1
+ #! /usr/bin/env groovy
2
+
3
+ String rspec_results = ''
4
+ String container_id = ''
5
+
6
+ pipeline {
7
+ agent { label 'docker' }
8
+
9
+ environment {
10
+ COMPOSE_PROJECT_NAME = 'japanda_build'
11
+ COMPOSE_FILE = 'docker-compose.yml'
12
+ }
13
+
14
+ options {
15
+ ansiColor("xterm")
16
+ }
17
+
18
+ stages {
19
+ stage('Build') {
20
+ steps {
21
+ echo 'Building the containers'
22
+ sh "docker-compose build --pull"
23
+
24
+ echo 'Starting containers'
25
+ sh "docker-compose up -d"
26
+ sh 'docker-compose run --no-deps -d testrunner tail -f /dev/null'
27
+
28
+ script {
29
+ sh "docker ps"
30
+ container_id = sh(script: "docker ps -qf 'name=testrunner'",
31
+ returnStdout: true
32
+ ).trim()
33
+ }
34
+ }
35
+
36
+ }
37
+
38
+ stage('Run Rspec Tests') {
39
+ steps {
40
+ sh "docker exec $container_id bundle exec rspec spec/ >> rspec_results"
41
+ }
42
+ }
43
+ }
44
+
45
+ post {
46
+ always {
47
+ script {
48
+ rspec_results = sh(script: 'cat rspec_results',
49
+ returnStdout: true
50
+ ).trim()
51
+
52
+ sh "docker cp $container_id:/usr/src/app/junit ."
53
+ junit allowEmptyResults: true, testResults: 'junit/rspec.xml'
54
+ }
55
+ echo rspec_results
56
+ }
57
+
58
+ cleanup {
59
+ sh 'if [ -d "junit" ]; then rm -r "junit"; fi'
60
+ sh 'if [ -f "rspec_results" ]; then rm -rf "rspec_results"; fi'
61
+ sh "docker-compose down --remove-orphans --rmi=all --volumes"
62
+ }
63
+ }
64
+ }
data/README.md CHANGED
@@ -1,16 +1,9 @@
1
1
  # Japanda
2
2
 
3
- Japanda provides an object-oriented wrapper and functional wrapper around Instructure Canvas Api's
3
+ Japanda provides an object-oriented and a functional wrapper around Instructure Canvas Api's
4
4
 
5
5
  Disclaimer: For testing purposes only.
6
6
 
7
- v0.1.3 Features
8
-
9
- 1. Create canvas learner user and admin user
10
- 2. Create canvas course
11
- 3. Add sections to canvas
12
- 4. Add module(s) with assignment(s)
13
-
14
7
  ## Installation
15
8
 
16
9
  Add this line to your application's Gemfile:
@@ -37,22 +30,47 @@ To create a new course
37
30
 
38
31
  CanvasFactory::Course.new
39
32
 
40
- To create a canvas course by specifying the course config
33
+ To create a new course by providing a custom hash(merge)
41
34
 
42
- course_config = CanvasFactory::CourseConfig.new({ name: 'Candy Tasting' })
43
- course = CanvasFactory::Course.new course_config
35
+ opts = { course:{ name: 'coursename1', course_code: "code-change#{SecureRandom.hex}" } }
36
+ course = CanvasFactory::Course.new(opts)
44
37
 
45
- To create a canvas learner user
46
-
47
- user_config = CanvasFactory::UserConfig.new(short_name: 'John Doe', password: 'Password01')
48
- user = CanvasFactory::User.new(user_config)
49
- learner_user = user.create_learner_user
38
+ To create a new course by providing a custom hash(no merge)
39
+
40
+ opts = {
41
+ account_id: '10',
42
+ course: {
43
+ name: "code-name#{SecureRandom.hex}",
44
+ course_code: "course_code#{SecureRandom.hex}"
45
+ },
46
+ offer: true
47
+ }
48
+ course = CanvasFactory::Course.new(opts, false)
50
49
 
51
50
  ## Development
52
51
 
53
52
  After checking out the repo, run `bundle install` to install dependencies. Then, run `rspec` to run the tests.
54
53
  To install this gem onto your local machine, run `bundle exec rake install`.
55
54
 
55
+ ### Run in docker
56
+
57
+ Make sure your .env variable contains
58
+ ```
59
+ CANVAS_API_HOST=<canvas_host>
60
+ CANVAS_API_TOKEN=<canvas_api_token>
61
+ CANVAS_ACCOUNT_ID=<canvas_account_id>
62
+ ```
63
+
64
+ Building the testrunner
65
+ ```
66
+ docker-compose build
67
+ ```
68
+
69
+ Running the tests:
70
+ ```
71
+ docker-compose run testrunner bundle exec rspec spec/
72
+ ```
73
+
56
74
  ## Release a new version
57
75
 
58
76
  To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
@@ -0,0 +1,11 @@
1
+ version: '2.0'
2
+
3
+ services:
4
+ testrunner:
5
+ build:
6
+ context: .
7
+ dockerfile: Dockerfile
8
+ environment:
9
+ CANVAS_API_HOST: ${CANVAS_API_HOST}
10
+ CANVAS_API_TOKEN: ${CANVAS_API_TOKEN}
11
+ CANVAS_ACCOUNT_ID: ${CANVAS_ACCOUNT_ID}
@@ -27,10 +27,13 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ['lib']
29
29
 
30
- spec.add_development_dependency 'bundler', '>= 1.0.0'
31
- spec.add_development_dependency 'rake', '~> 10.0'
32
- spec.add_development_dependency 'rspec'
33
- spec.add_development_dependency 'hashie'
30
+ spec.add_development_dependency 'bundler', '~>1.5'
31
+ spec.add_development_dependency 'byebug'
34
32
  spec.add_development_dependency 'dotenv'
35
- spec.add_dependency 'rest-client'
33
+ spec.add_development_dependency 'hashie', '~>4.0.0'
34
+ spec.add_development_dependency 'rake'
35
+ spec.add_development_dependency 'rspec', '~> 3.5.0'
36
+ spec.add_dependency 'rest-client', '>= 2.1.0'
37
+ spec.add_dependency 'rspec_junit_formatter', '~>0.4.1'
38
+
36
39
  end
@@ -1,6 +1,8 @@
1
1
  require 'japanda/version'
2
2
  require 'securerandom'
3
3
  require 'rest-client'
4
+ require 'json'
5
+ require 'byebug'
4
6
 
5
7
  module Japanda
6
8
  end
@@ -9,11 +9,16 @@ module CanvasFactory
9
9
  }
10
10
  CANVAS_ACCOUNT_ID ||= ENV['CANVAS_ACCOUNT_ID']
11
11
 
12
+ # JSON.generate see: https://github.com/rest-client/rest-client/issues/635/
12
13
  def self.perform_post(end_point, body)
13
- JSON.parse(RestClient.post end_point, body, CANVAS_AUTH_HEADER)
14
+ JSON.parse(RestClient.post end_point, JSON.generate(body), CANVAS_AUTH_HEADER)
14
15
  end
15
16
 
16
17
  def self.perform_put(end_point, body)
17
- JSON.parse(RestClient.put end_point, body, CANVAS_AUTH_HEADER)
18
+ JSON.parse(RestClient.put end_point, JSON.generate(body), CANVAS_AUTH_HEADER)
19
+ end
20
+
21
+ def self.perform_delete(end_point)
22
+ JSON.parse(RestClient.delete end_point, CANVAS_AUTH_HEADER)
18
23
  end
19
24
  end
@@ -1,9 +1,10 @@
1
1
  require 'hashie/extensions/deep_merge'
2
+ module CanvasFactory
3
+ class Mergie < Hash
4
+ include Hashie::Extensions::DeepMerge
2
5
 
3
- class Mergie < Hash
4
- include Hashie::Extensions::DeepMerge
5
-
6
- def self.deep_merge(default_hash, given_hash, should_merge)
7
- should_merge ? Mergie[default_hash].deep_merge(Mergie[given_hash]).to_h: given_hash
6
+ def self.deep_merge(default_hash, given_hash, should_merge)
7
+ should_merge ? Mergie[default_hash].deep_merge(Mergie[given_hash]).to_h: given_hash
8
+ end
8
9
  end
9
- end
10
+ end
@@ -23,6 +23,11 @@ module CanvasFactory
23
23
  create_learner_user
24
24
  end
25
25
 
26
+ def delete_user
27
+ user_end_point = "#{CANVAS_API_V1}/accounts/#{CANVAS_ACCOUNT_ID}/users/#{@id}"
28
+ @user_response = CanvasFactory.perform_delete(user_end_point)
29
+ end
30
+
26
31
  private
27
32
 
28
33
  def create_learner_user
@@ -52,7 +57,11 @@ module CanvasFactory
52
57
  send_confirmation: true
53
58
  }
54
59
  admin_end_point = "#{CANVAS_API_V1}/accounts/#{CANVAS_ACCOUNT_ID}/admins"
55
- CanvasFactory.perform_post(admin_end_point, @admin_request)
60
+ @admin_response = CanvasFactory.perform_post(admin_end_point, @admin_request)
61
+ @id = @admin_response['user']['id']
62
+ @email_id = @admin_response['user']['login_id']
63
+ @short_name = @admin_response['user']['short_name']
64
+ @admin_response
56
65
  end
57
66
  end
58
67
  end
@@ -1,3 +1,3 @@
1
1
  module Japanda
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,46 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: japanda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Santosh Natarajan
8
8
  - Robert Lamb
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2015-12-09 00:00:00.000000000 Z
12
+ date: 2020-12-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.0.0
20
+ version: '1.5'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 1.0.0
27
+ version: '1.5'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rake
29
+ name: byebug
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '10.0'
34
+ version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '10.0'
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: rspec
43
+ name: dotenv
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
@@ -57,18 +57,18 @@ dependencies:
57
57
  name: hashie
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: 4.0.0
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: 4.0.0
70
70
  - !ruby/object:Gem::Dependency
71
- name: dotenv
71
+ name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ">="
@@ -81,20 +81,48 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rspec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: 3.5.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 3.5.0
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: rest-client
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
102
  - - ">="
89
103
  - !ruby/object:Gem::Version
90
- version: '0'
104
+ version: 2.1.0
91
105
  type: :runtime
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
109
  - - ">="
96
110
  - !ruby/object:Gem::Version
97
- version: '0'
111
+ version: 2.1.0
112
+ - !ruby/object:Gem::Dependency
113
+ name: rspec_junit_formatter
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: 0.4.1
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: 0.4.1
98
126
  description: Library to create custom course. wip.
99
127
  email:
100
128
  - snatarajan@instructure.com
@@ -106,14 +134,18 @@ files:
106
134
  - ".env.example"
107
135
  - ".gitignore"
108
136
  - ".rspec"
137
+ - ".ruby-version"
109
138
  - ".travis.yml"
110
139
  - CODE_OF_CONDUCT.md
140
+ - Dockerfile
111
141
  - Gemfile
112
142
  - Gemfile.lock
143
+ - Jenkinsfile
113
144
  - README.md
114
145
  - Rakefile
115
146
  - bin/console
116
147
  - bin/setup
148
+ - docker-compose.yml
117
149
  - japanda.gemspec
118
150
  - lib/japanda.rb
119
151
  - lib/japanda/canvas_factory.rb
@@ -126,10 +158,10 @@ files:
126
158
  - lib/japanda/canvas_factory/section.rb
127
159
  - lib/japanda/canvas_factory/user.rb
128
160
  - lib/japanda/version.rb
129
- homepage:
161
+ homepage:
130
162
  licenses: []
131
163
  metadata: {}
132
- post_install_message:
164
+ post_install_message:
133
165
  rdoc_options: []
134
166
  require_paths:
135
167
  - lib
@@ -144,9 +176,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
176
  - !ruby/object:Gem::Version
145
177
  version: '0'
146
178
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.4.5
149
- signing_key:
179
+ rubygems_version: 3.0.8
180
+ signing_key:
150
181
  specification_version: 4
151
182
  summary: Library to create custom course.
152
183
  test_files: []