japanda 0.1.4 → 0.1.5

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
- 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: []