moodle_rb 1.0.5 → 2.0.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.
Files changed (67) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/build.yml +36 -0
  3. data/.github/workflows/publish.yml +27 -0
  4. data/Dockerfile +10 -0
  5. data/README.md +80 -2
  6. data/docker-compose.yml +6 -0
  7. data/lib/moodle_rb/courses.rb +48 -2
  8. data/lib/moodle_rb/enrolments.rb +30 -1
  9. data/lib/moodle_rb/users.rb +16 -0
  10. data/lib/moodle_rb/version.rb +1 -1
  11. data/moodle_rb.gemspec +1 -2
  12. data/spec/cassettes/MoodleRb_Categories/_create/.yml +19 -19
  13. data/spec/cassettes/MoodleRb_Categories/_create/when_validation_fails/.yml +19 -19
  14. data/spec/cassettes/MoodleRb_Categories/_destroy/when_using_invalid_token/.yml +20 -20
  15. data/spec/cassettes/MoodleRb_Categories/_destroy/when_using_valid_token/.yml +39 -38
  16. data/spec/cassettes/MoodleRb_Categories/_index/.yml +19 -19
  17. data/spec/cassettes/MoodleRb_Categories/_index/when_using_invalid_token/.yml +20 -20
  18. data/spec/cassettes/MoodleRb_Categories/_show/when_using_invalid_token/.yml +20 -20
  19. data/spec/cassettes/MoodleRb_Client/_site_info/when_invalid_token/.yml +20 -20
  20. data/spec/cassettes/MoodleRb_Client/_site_info/when_valid_token/.yml +19 -19
  21. data/spec/cassettes/MoodleRb_Courses/_contents/when_using_invalid_token/.yml +52 -0
  22. data/spec/cassettes/MoodleRb_Courses/_contents/when_using_valid_token/.yml +52 -0
  23. data/spec/cassettes/MoodleRb_Courses/_create/.yml +19 -19
  24. data/spec/cassettes/MoodleRb_Courses/_create/when_validation_fails/.yml +36 -36
  25. data/spec/cassettes/MoodleRb_Courses/_destroy/when_using_invalid_token/.yml +20 -20
  26. data/spec/cassettes/MoodleRb_Courses/_destroy/when_using_valid_token/.yml +38 -38
  27. data/spec/cassettes/MoodleRb_Courses/_destroy/when_using_valid_token/when_using_invalid_course_id/.yml +20 -20
  28. data/spec/cassettes/MoodleRb_Courses/_enrolled_users/when_using_invalid_token/.yml +20 -20
  29. data/spec/cassettes/MoodleRb_Courses/_enrolled_users/when_using_valid_token/.yml +39 -39
  30. data/spec/cassettes/MoodleRb_Courses/_grade_items/when_using_invalid_token/.yml +52 -0
  31. data/spec/cassettes/MoodleRb_Courses/_grade_items/when_using_valid_token/.yml +56 -0
  32. data/spec/cassettes/MoodleRb_Courses/_index/.yml +19 -19
  33. data/spec/cassettes/MoodleRb_Courses/_index/when_using_invalid_token/.yml +20 -20
  34. data/spec/cassettes/MoodleRb_Courses/_module/when_using_invalid_token/.yml +52 -0
  35. data/spec/cassettes/MoodleRb_Courses/_module/when_using_valid_token/.yml +51 -0
  36. data/spec/cassettes/MoodleRb_Courses/_show/.yml +19 -19
  37. data/spec/cassettes/MoodleRb_Courses/_show/when_using_invalid_token/.yml +20 -20
  38. data/spec/cassettes/MoodleRb_Enrolments/_create/.yml +19 -19
  39. data/spec/cassettes/MoodleRb_Enrolments/_create/when_user_or_course_id_is_invalid/.yml +19 -19
  40. data/spec/cassettes/MoodleRb_Enrolments/_destroy/.yml +51 -0
  41. data/spec/cassettes/MoodleRb_Enrolments/_destroy/when_user_or_course_id_is_invalid/.yml +52 -0
  42. data/spec/cassettes/MoodleRb_Grades/_by_assignment/.yml +19 -19
  43. data/spec/cassettes/MoodleRb_Grades/_by_course/.yml +19 -19
  44. data/spec/cassettes/MoodleRb_Grades/_by_course/when_invalid_parameters/.yml +19 -19
  45. data/spec/cassettes/MoodleRb_Users/_create/.yml +19 -19
  46. data/spec/cassettes/MoodleRb_Users/_create/when_missing_required_parameters/.yml +19 -19
  47. data/spec/cassettes/MoodleRb_Users/_destroy/.yml +19 -19
  48. data/spec/cassettes/MoodleRb_Users/_destroy/when_id_does_not_exist/.yml +19 -19
  49. data/spec/cassettes/MoodleRb_Users/_destroy/when_using_invalid_token/.yml +20 -20
  50. data/spec/cassettes/MoodleRb_Users/_enrolled_courses/.yml +19 -19
  51. data/spec/cassettes/MoodleRb_Users/_enrolled_courses/when_using_invalid_token/.yml +20 -20
  52. data/spec/cassettes/MoodleRb_Users/_search/.yml +21 -21
  53. data/spec/cassettes/MoodleRb_Users/_search/when_using_invalid_token/.yml +20 -20
  54. data/spec/cassettes/MoodleRb_Users/_search_identity/.yml +51 -0
  55. data/spec/cassettes/MoodleRb_Users/_search_identity/when_using_invalid_token/.yml +52 -0
  56. data/spec/cassettes/MoodleRb_Users/_show/.yml +19 -19
  57. data/spec/cassettes/MoodleRb_Users/_show/when_using_invalid_token/.yml +20 -20
  58. data/spec/cassettes/MoodleRb_Users/_update/.yml +20 -20
  59. data/spec/cassettes/MoodleRb_Users/_update/when_using_invalid_token/.yml +20 -20
  60. data/spec/lib/moodle_rb/categories_spec.rb +6 -6
  61. data/spec/lib/moodle_rb/client_spec.rb +3 -3
  62. data/spec/lib/moodle_rb/courses_spec.rb +88 -8
  63. data/spec/lib/moodle_rb/enrolments_spec.rb +39 -4
  64. data/spec/lib/moodle_rb/grades_spec.rb +4 -4
  65. data/spec/lib/moodle_rb/users_spec.rb +37 -8
  66. data/spec/lib/moodle_rb_spec.rb +2 -2
  67. metadata +117 -135
@@ -0,0 +1,52 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://localhost:8888/moodle28/webservice/rest/server.php?moodlewsrestformat=json&wsfunction=core_user_search_identity&wstoken=
6
+ body:
7
+ encoding: UTF-8
8
+ string: query=moodle_student%40mailinator.com
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Accept-Ranges:
16
+ - bytes
17
+ - none
18
+ Access-Control-Allow-Origin:
19
+ - "*"
20
+ Age:
21
+ - '0'
22
+ Cache-Control:
23
+ - private, must-revalidate, pre-check=0, post-check=0, max-age=0
24
+ Content-Type:
25
+ - application/json
26
+ Date:
27
+ - Tue, 11 Jan 2022 21:28:57 GMT
28
+ Expires:
29
+ - Thu, 01 Jan 1970 00:00:00 GMT
30
+ Pragma:
31
+ - no-cache
32
+ Server:
33
+ - Moodle
34
+ X-Cache:
35
+ - MISS
36
+ X-Clacks-Overhead:
37
+ - GNU Terry Pratchett
38
+ X-Ec2-Instance-Id:
39
+ - i-0afd4744d7a60c5d7
40
+ X-Powered-By:
41
+ - Moodle Ninjas
42
+ Content-Length:
43
+ - '103'
44
+ Connection:
45
+ - keep-alive
46
+ body:
47
+ encoding: UTF-8
48
+ string: '{"exception":"moodle_exception","errorcode":"invalidtoken","message":"Invalid
49
+ token - token not found"}'
50
+ http_version:
51
+ recorded_at: Tue, 11 Jan 2022 21:28:24 GMT
52
+ recorded_with: VCR 2.9.3
@@ -1,39 +1,39 @@
1
- ---
1
+ ---
2
2
  recorded_with: VCR 2.9.3
3
- http_interactions:
4
- - request:
3
+ http_interactions:
4
+ - request:
5
5
  method: post
6
6
  uri: http://localhost:8888/moodle28/webservice/rest/server.php?moodlewsrestformat=json&wsfunction=core_user_get_users&wstoken=60fc9c9415259404795094957e4ab32f
7
- body:
7
+ body:
8
8
  string: criteria[0][key]=id&criteria[0][value]=5
9
9
  headers: {}
10
10
 
11
- response:
12
- status:
11
+ response:
12
+ status:
13
13
  code: 200
14
14
  message: OK
15
- headers:
16
- Server:
15
+ headers:
16
+ Server:
17
17
  - Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8 PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/v5.20.0
18
- Pragma:
18
+ Pragma:
19
19
  - no-cache
20
- Date:
20
+ Date:
21
21
  - Sun, 12 Apr 2015 01:01:44 GMT
22
- Access-Control-Allow-Origin:
22
+ Access-Control-Allow-Origin:
23
23
  - "*"
24
- Content-Length:
24
+ Content-Length:
25
25
  - "353"
26
- X-Powered-By:
26
+ X-Powered-By:
27
27
  - PHP/5.6.2
28
- Expires:
28
+ Expires:
29
29
  - Thu, 01 Jan 1970 00:00:00 GMT
30
- Cache-Control:
30
+ Cache-Control:
31
31
  - private, must-revalidate, pre-check=0, post-check=0, max-age=0
32
- Content-Type:
32
+ Content-Type:
33
33
  - application/json
34
- Accept-Ranges:
34
+ Accept-Ranges:
35
35
  - none
36
- body:
36
+ body:
37
37
  string: "{\"users\":[{\"id\":5,\"firstname\":\"Austin\",\"lastname\":\"Powers\",\"fullname\":\"Austin Powers\",\"email\":\"austinp1@jobready.com.au\",\"firstaccess\":0,\"lastaccess\":0,\"profileimageurlsmall\":\"http:\\/\\/localhost:8888\\/moodle28\\/pluginfile.php\\/69\\/user\\/icon\\/f2\",\"profileimageurl\":\"http:\\/\\/localhost:8888\\/moodle28\\/pluginfile.php\\/69\\/user\\/icon\\/f1\"}],\"warnings\":[]}"
38
- http_version:
38
+ http_version:
39
39
  recorded_at: Sun, 12 Apr 2015 01:01:44 GMT
@@ -1,39 +1,39 @@
1
- ---
1
+ ---
2
2
  recorded_with: VCR 2.9.3
3
- http_interactions:
4
- - request:
3
+ http_interactions:
4
+ - request:
5
5
  method: post
6
- uri: http://localhost:8888/moodle29/webservice/rest/server.php?moodlewsrestformat=json&wsfunction=core_user_get_users&wstoken=
7
- body:
6
+ uri: http://localhost:8888/moodle28/webservice/rest/server.php?moodlewsrestformat=json&wsfunction=core_user_get_users&wstoken=
7
+ body:
8
8
  string: criteria[0][value]=5&criteria[0][key]=id
9
9
  headers: {}
10
10
 
11
- response:
12
- status:
11
+ response:
12
+ status:
13
13
  code: 200
14
14
  message: OK
15
- headers:
16
- Cache-Control:
15
+ headers:
16
+ Cache-Control:
17
17
  - private, must-revalidate, pre-check=0, post-check=0, max-age=0
18
- Pragma:
18
+ Pragma:
19
19
  - no-cache
20
- Server:
20
+ Server:
21
21
  - Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8 PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zg DAV/2 mod_perl/2.0.8 Perl/v5.20.0
22
- Accept-Ranges:
22
+ Accept-Ranges:
23
23
  - none
24
- Content-Type:
24
+ Content-Type:
25
25
  - application/json
26
- Date:
26
+ Date:
27
27
  - Mon, 20 Jun 2016 22:30:45 GMT
28
- Expires:
28
+ Expires:
29
29
  - Thu, 01 Jan 1970 00:00:00 GMT
30
- Access-Control-Allow-Origin:
30
+ Access-Control-Allow-Origin:
31
31
  - "*"
32
- Content-Length:
32
+ Content-Length:
33
33
  - "103"
34
- X-Powered-By:
34
+ X-Powered-By:
35
35
  - PHP/5.6.2
36
- body:
36
+ body:
37
37
  string: "{\"exception\":\"moodle_exception\",\"errorcode\":\"invalidtoken\",\"message\":\"Invalid token - token not found\"}"
38
- http_version:
38
+ http_version:
39
39
  recorded_at: Mon, 20 Jun 2016 22:30:45 GMT
@@ -1,39 +1,39 @@
1
- ---
2
- http_interactions:
3
- - request:
1
+ ---
2
+ http_interactions:
3
+ - request:
4
4
  method: post
5
- uri: http://localhost:8888/moodle29/webservice/rest/server.php?moodlewsrestformat=json&wsfunction=core_user_update_users&wstoken=87b95af2df709fa60b395b5c59a3fc2e
6
- body:
5
+ uri: http://localhost:8888/moodle28/webservice/rest/server.php?moodlewsrestformat=json&wsfunction=core_user_update_users&wstoken=60fc9c9415259404795094957e4ab32f
6
+ body:
7
7
  string: users[0][email]=samg%40jobready.com.au&users[0][id]=4
8
8
  headers: {}
9
9
 
10
- response:
11
- status:
10
+ response:
11
+ status:
12
12
  code: 200
13
13
  message: OK
14
- headers:
15
- Expires:
14
+ headers:
15
+ Expires:
16
16
  - Thu, 01 Jan 1970 00:00:00 GMT
17
- X-Powered-By:
17
+ X-Powered-By:
18
18
  - PHP/5.6.2
19
- Content-Type:
19
+ Content-Type:
20
20
  - application/json
21
- Content-Length:
21
+ Content-Length:
22
22
  - "4"
23
- Date:
23
+ Date:
24
24
  - Wed, 08 Jun 2016 06:40:27 GMT
25
- Access-Control-Allow-Origin:
25
+ Access-Control-Allow-Origin:
26
26
  - "*"
27
- Accept-Ranges:
27
+ Accept-Ranges:
28
28
  - none
29
- Pragma:
29
+ Pragma:
30
30
  - no-cache
31
- Server:
31
+ Server:
32
32
  - Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8 PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zg DAV/2 mod_perl/2.0.8 Perl/v5.20.0
33
- Cache-Control:
33
+ Cache-Control:
34
34
  - private, must-revalidate, pre-check=0, post-check=0, max-age=0
35
- body:
35
+ body:
36
36
  string: "null"
37
- http_version:
37
+ http_version:
38
38
  recorded_at: Wed, 08 Jun 2016 06:40:27 GMT
39
39
  recorded_with: VCR 2.9.3
@@ -1,39 +1,39 @@
1
- ---
2
- http_interactions:
3
- - request:
1
+ ---
2
+ http_interactions:
3
+ - request:
4
4
  method: post
5
- uri: http://localhost:8888/moodle29/webservice/rest/server.php?moodlewsrestformat=json&wsfunction=core_user_update_users&wstoken=
6
- body:
5
+ uri: http://localhost:8888/moodle28/webservice/rest/server.php?moodlewsrestformat=json&wsfunction=core_user_update_users&wstoken=
6
+ body:
7
7
  string: users[0][email]=&users[0][id]=4
8
8
  headers: {}
9
9
 
10
- response:
11
- status:
10
+ response:
11
+ status:
12
12
  code: 200
13
13
  message: OK
14
- headers:
15
- X-Powered-By:
14
+ headers:
15
+ X-Powered-By:
16
16
  - PHP/5.6.2
17
- Accept-Ranges:
17
+ Accept-Ranges:
18
18
  - none
19
- Server:
19
+ Server:
20
20
  - Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8 PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zg DAV/2 mod_perl/2.0.8 Perl/v5.20.0
21
- Pragma:
21
+ Pragma:
22
22
  - no-cache
23
- Content-Type:
23
+ Content-Type:
24
24
  - application/json
25
- Access-Control-Allow-Origin:
25
+ Access-Control-Allow-Origin:
26
26
  - "*"
27
- Expires:
27
+ Expires:
28
28
  - Thu, 01 Jan 1970 00:00:00 GMT
29
- Date:
29
+ Date:
30
30
  - Mon, 20 Jun 2016 22:39:11 GMT
31
- Cache-Control:
31
+ Cache-Control:
32
32
  - private, must-revalidate, pre-check=0, post-check=0, max-age=0
33
- Content-Length:
33
+ Content-Length:
34
34
  - "103"
35
- body:
35
+ body:
36
36
  string: "{\"exception\":\"moodle_exception\",\"errorcode\":\"invalidtoken\",\"message\":\"Invalid token - token not found\"}"
37
- http_version:
37
+ http_version:
38
38
  recorded_at: Mon, 20 Jun 2016 22:39:11 GMT
39
39
  recorded_with: VCR 2.9.3
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MoodleRb::Categories do
4
- let(:url) { ENV['MOODLE_URL'] || 'localhost' }
5
- let(:token) { ENV['MOODLE_TOKEN'] || '' }
4
+ let(:url) { ENV['MOODLE_URL'] || 'localhost:8888/moodle28' }
5
+ let(:token) { ENV['MOODLE_TOKEN'] || '60fc9c9415259404795094957e4ab32f' }
6
6
  let(:category_moodle_rb) { MoodleRb.new(token, url).categories }
7
7
 
8
8
  describe '#index', :vcr => {
9
- :match_requests_on => [:body, :headers], :record => :once
9
+ :match_requests_on => [:body, :path], :record => :once
10
10
  } do
11
11
  let(:result) { category_moodle_rb.index }
12
12
 
@@ -27,7 +27,7 @@ describe MoodleRb::Categories do
27
27
  end
28
28
 
29
29
  describe '#create', :vcr => {
30
- :match_requests_on => [:headers], :record => :once
30
+ :match_requests_on => [:path], :record => :once
31
31
  } do
32
32
  let(:params) do
33
33
  {
@@ -60,7 +60,7 @@ describe MoodleRb::Categories do
60
60
  end
61
61
 
62
62
  describe '#show', :vcr => {
63
- :match_requests_on => [:headers], :record => :once
63
+ :match_requests_on => [:path], :record => :once
64
64
  } do
65
65
  let(:id) { 1 }
66
66
  let(:result) { category_moodle_rb.show(id) }
@@ -82,7 +82,7 @@ describe MoodleRb::Categories do
82
82
  end
83
83
 
84
84
  describe '#destroy', :vcr => {
85
- :match_requests_on => [:headers], :record => :once
85
+ :match_requests_on => [:path], :record => :once
86
86
  } do
87
87
  context 'when using valid token' do
88
88
  let!(:id) { category_moodle_rb.create(:name => '_')['id'] }
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MoodleRb::Client do
4
- let(:url) { ENV['MOODLE_URL'] || 'localhost' }
5
- let(:token) { ENV['MOODLE_TOKEN'] || '' }
4
+ let(:url) { ENV['MOODLE_URL'] || 'localhost:8888/moodle28' }
5
+ let(:token) { ENV['MOODLE_TOKEN'] || '60fc9c9415259404795094957e4ab32f' }
6
6
  let(:moodle_rb) { MoodleRb.new(token, url) }
7
7
 
8
8
  describe '#site_info', :vcr => {
9
- :match_requests_on => [:body, :headers], :record => :once
9
+ :match_requests_on => [:body, :path], :record => :once
10
10
  } do
11
11
  let(:result) { moodle_rb.site_info }
12
12
 
@@ -1,20 +1,22 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MoodleRb::Courses do
4
- let(:url) { ENV['MOODLE_URL'] || 'localhost' }
5
- let(:token) { ENV['MOODLE_TOKEN'] || '' }
4
+ let(:url) { ENV['MOODLE_URL'] || 'localhost:8888/moodle28' }
5
+ let(:token) { ENV['MOODLE_TOKEN'] || '60fc9c9415259404795094957e4ab32f' }
6
6
  let(:course_moodle_rb) { MoodleRb.new(token, url).courses }
7
7
  let(:params) do
8
8
  {
9
9
  :full_name => 'Test Course',
10
10
  :short_name => 'TestC1',
11
11
  :parent_category => 1,
12
- :idnumber => 'ExtRef'
12
+ :idnumber => 'ExtRef',
13
+ :start_date => 1646312400,
14
+ :end_date => 1646398800
13
15
  }
14
16
  end
15
17
 
16
18
  describe '#index', :vcr => {
17
- :match_requests_on => [:body, :headers], :record => :once
19
+ :match_requests_on => [:body, :path], :record => :once
18
20
  } do
19
21
  let(:result) { course_moodle_rb.index }
20
22
 
@@ -35,7 +37,7 @@ describe MoodleRb::Courses do
35
37
  end
36
38
 
37
39
  describe '#create', :vcr => {
38
- :match_requests_on => [:headers], :record => :once
40
+ :match_requests_on => [:path], :record => :once
39
41
  } do
40
42
  let(:result) { course_moodle_rb.create(params) }
41
43
 
@@ -60,7 +62,7 @@ describe MoodleRb::Courses do
60
62
  end
61
63
 
62
64
  describe '#show', :vcr => {
63
- :match_requests_on => [:headers], :record => :once
65
+ :match_requests_on => [:path], :record => :once
64
66
  } do
65
67
  let(:id) { 1 }
66
68
  let(:result) { course_moodle_rb.show(id) }
@@ -82,7 +84,7 @@ describe MoodleRb::Courses do
82
84
  end
83
85
 
84
86
  describe '#destroy', :vcr => {
85
- :match_requests_on => [:headers], :record => :once
87
+ :match_requests_on => [:path], :record => :once
86
88
  } do
87
89
  context 'when using valid token' do
88
90
  let(:id) { course_moodle_rb.create(params)['id'] }
@@ -117,7 +119,7 @@ describe MoodleRb::Courses do
117
119
  end
118
120
 
119
121
  describe '#enrolled_users', :vcr => {
120
- :match_requests_on => [:headers], :record => :once
122
+ :match_requests_on => [:path], :record => :once
121
123
  } do
122
124
  let(:course_id) { 8 }
123
125
 
@@ -146,4 +148,82 @@ describe MoodleRb::Courses do
146
148
  end
147
149
  end
148
150
  end
151
+
152
+ describe '#grade_items', :vcr => {
153
+ :match_requests_on => [:path], :record => :once
154
+ } do
155
+ let(:course_id) { 5 }
156
+
157
+ context 'when using valid token' do
158
+ let(:result) { course_moodle_rb.grade_items(course_id) }
159
+ let(:user_grades) { result.first }
160
+
161
+ specify do
162
+ expect(result).to be_a Array
163
+ expect(user_grades).to have_key 'gradeitems'
164
+ end
165
+ end
166
+
167
+ context 'when using invalid token' do
168
+ let(:token) { '' }
169
+ specify do
170
+ expect{ course_moodle_rb.grade_items(course_id) }.to raise_error(
171
+ MoodleRb::MoodleError,
172
+ 'Invalid token - token not found'
173
+ )
174
+ end
175
+ end
176
+ end
177
+
178
+ describe '#contents', :vcr => {
179
+ :match_requests_on => [:path], :record => :once
180
+ } do
181
+ let(:course_id) { 5 }
182
+
183
+ context 'when using valid token' do
184
+ let(:result) { course_moodle_rb.contents(course_id) }
185
+ let(:enrolment) { result.first }
186
+
187
+ specify do
188
+ expect(result).to be_a Array
189
+ expect(result[0]).to have_key 'modules'
190
+ end
191
+ end
192
+
193
+ context 'when using invalid token' do
194
+ let(:token) { '' }
195
+ specify do
196
+ expect{ course_moodle_rb.contents(course_id) }.to raise_error(
197
+ MoodleRb::MoodleError,
198
+ 'Invalid token - token not found'
199
+ )
200
+ end
201
+ end
202
+ end
203
+
204
+ describe '#module', :vcr => {
205
+ :match_requests_on => [:path], :record => :once
206
+ } do
207
+ let(:course_module_id) { 21 }
208
+
209
+ context 'when using valid token' do
210
+ let(:result) { course_moodle_rb.module(course_module_id) }
211
+
212
+ specify do
213
+ expect(result).to be_a Hash
214
+ expect(result).to have_key 'name'
215
+ expect(result).to have_key 'gradepass'
216
+ end
217
+ end
218
+
219
+ context 'when using invalid token' do
220
+ let(:token) { '' }
221
+ specify do
222
+ expect{ course_moodle_rb.module(course_module_id) }.to raise_error(
223
+ MoodleRb::MoodleError,
224
+ 'Invalid token - token not found'
225
+ )
226
+ end
227
+ end
228
+ end
149
229
  end
@@ -1,17 +1,19 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MoodleRb::Enrolments do
4
- let(:url) { ENV['MOODLE_URL'] || 'localhost' }
5
- let(:token) { ENV['MOODLE_TOKEN'] || '' }
4
+ let(:url) { ENV['MOODLE_URL'] || 'localhost:8888/moodle28' }
5
+ let(:token) { ENV['MOODLE_TOKEN'] || '60fc9c9415259404795094957e4ab32f' }
6
6
  let(:enrolment_moodle_rb) { MoodleRb.new(token, url).enrolments }
7
7
 
8
8
  describe '#create', :vcr => {
9
- :match_requests_on => [:headers], :record => :once
9
+ :match_requests_on => [:path], :record => :once
10
10
  } do
11
11
  let(:params) do
12
12
  {
13
13
  :user_id => 3,
14
- :course_id => 8
14
+ :course_id => 8,
15
+ :time_start => 1646312400,
16
+ :time_end => 1646398800
15
17
  }
16
18
  end
17
19
  let(:result) { enrolment_moodle_rb.create(params) }
@@ -36,4 +38,37 @@ describe MoodleRb::Enrolments do
36
38
  end
37
39
  end
38
40
  end
41
+
42
+ describe '#destroy', :vcr => {
43
+ :match_requests_on => [:path], :record => :once
44
+ } do
45
+ let(:params) do
46
+ {
47
+ :user_id => '7',
48
+ :course_id => '5'
49
+ }
50
+ end
51
+
52
+ let(:result) { enrolment_moodle_rb.destroy(params) }
53
+
54
+ specify do
55
+ expect(result).to eq true
56
+ end
57
+
58
+ context 'when user or course id is invalid' do
59
+ let(:params) do
60
+ {
61
+ :user_id => 9999,
62
+ :course_id => 9999
63
+ }
64
+ end
65
+
66
+ specify do
67
+ expect{ result }.to raise_error(
68
+ MoodleRb::MoodleError,
69
+ "Can't find data record in database table course."
70
+ )
71
+ end
72
+ end
73
+ end
39
74
  end
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MoodleRb::Grades do
4
- let(:url) { ENV['MOODLE_URL'] || 'localhost' }
5
- let(:token) { ENV['MOODLE_TOKEN'] || '' }
4
+ let(:url) { ENV['MOODLE_URL'] || 'localhost:8888/moodle28' }
5
+ let(:token) { ENV['MOODLE_TOKEN'] || '60fc9c9415259404795094957e4ab32f' }
6
6
  let(:grade_moodle_rb) { MoodleRb.new(token, url).grades }
7
7
 
8
8
  describe '#by_assignment', :vcr => {
9
- :match_requests_on => [:body, :headers], :record => :once
9
+ :match_requests_on => [:path], :record => :once
10
10
  } do
11
11
  let(:assignment_id) { 1 }
12
12
  let(:result) { grade_moodle_rb.by_assignment(assignment_id) }
@@ -18,7 +18,7 @@ describe MoodleRb::Grades do
18
18
  end
19
19
 
20
20
  describe '#by_course', :vcr => {
21
- :match_requests_on => [:headers], :record => :once
21
+ :match_requests_on => [:path], :record => :once
22
22
  } do
23
23
  let(:course_id) { 8 }
24
24
  let(:user_ids) { 5 }
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MoodleRb::Users do
4
- let(:url) { ENV['MOODLE_URL'] || 'localhost' }
5
- let(:token) { ENV['MOODLE_TOKEN'] || '' }
4
+ let(:url) { ENV['MOODLE_URL'] || 'localhost:8888/moodle28' }
5
+ let(:token) { ENV['MOODLE_TOKEN'] || '60fc9c9415259404795094957e4ab32f' }
6
6
  let(:user_moodle_rb) { MoodleRb.new(token, url).users }
7
7
 
8
8
  describe '#create', :vcr => {
9
- :match_requests_on => [:headers], :record => :once
9
+ :match_requests_on => [:path], :record => :once
10
10
  } do
11
11
  let(:params) do
12
12
  {
@@ -43,7 +43,7 @@ describe MoodleRb::Users do
43
43
  end
44
44
 
45
45
  describe '#show', :vcr => {
46
- :match_requests_on => [:headers], :record => :once
46
+ :match_requests_on => [:path], :record => :once
47
47
  } do
48
48
  let(:id) { 5 }
49
49
  let(:result) { user_moodle_rb.show(id) }
@@ -65,7 +65,7 @@ describe MoodleRb::Users do
65
65
  end
66
66
 
67
67
  describe '#destroy', :vcr => {
68
- :match_requests_on => [:headers], :record => :once
68
+ :match_requests_on => [:path], :record => :once
69
69
  } do
70
70
  let(:id) { 5 }
71
71
  let(:result) { user_moodle_rb.destroy(id) }
@@ -96,7 +96,7 @@ describe MoodleRb::Users do
96
96
  end
97
97
 
98
98
  describe '#enrolled_courses', :vcr => {
99
- :match_requests_on => [:headers], :record => :once
99
+ :match_requests_on => [:path], :record => :once
100
100
  } do
101
101
  let(:user_id) { 3 }
102
102
  let(:result) { user_moodle_rb.enrolled_courses(user_id) }
@@ -119,7 +119,7 @@ describe MoodleRb::Users do
119
119
  end
120
120
 
121
121
  describe '#search', :vcr => {
122
- :match_requests_on => [:headers], :record => :once
122
+ :match_requests_on => [:path], :record => :once
123
123
  } do
124
124
  let(:results) { user_moodle_rb.search({ :firstname => 'Guest%' }) }
125
125
 
@@ -140,8 +140,37 @@ describe MoodleRb::Users do
140
140
  end
141
141
  end
142
142
 
143
+ describe '#search_identity', :vcr => {
144
+ :match_requests_on => [:path], :record => :once
145
+ } do
146
+ let(:results) { user_moodle_rb.search_identity('moodle_student@mailinator.com') }
147
+
148
+ specify do
149
+ expect(results).to be_a Array
150
+ expect(results.first).to be_a Hash
151
+ expect(results.first['id']).to eq 25
152
+ expect(results.first['fullname']).to eq 'Moodle Student'
153
+ expect(results.first['extrafields'].first['name']).to eq 'idnumber'
154
+ expect(results.first['extrafields'].first['value']).to eq 'MS01'
155
+ expect(results.first['extrafields'].last['name']).to eq 'email'
156
+ expect(results.first['extrafields'].last['value']).to eq 'moodle_student@mailinator.com'
157
+ end
158
+
159
+ context 'when using invalid token' do
160
+ let(:token) { '' }
161
+ specify do
162
+ expect do
163
+ user_moodle_rb.search_identity('moodle_student@mailinator.com')
164
+ end.to raise_error(
165
+ MoodleRb::MoodleError,
166
+ 'Invalid token - token not found'
167
+ )
168
+ end
169
+ end
170
+ end
171
+
143
172
  describe '#update', :vcr => {
144
- :match_requests_on => [:headers], :record => :once
173
+ :match_requests_on => [:path], :record => :once
145
174
  } do
146
175
  let(:user_id) { 4 }
147
176
  let(:result) do
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MoodleRb do
4
- let(:url) { ENV['MOODLE_URL'] || 'localhost' }
5
- let(:token) { ENV['MOODLE_TOKEN'] || '' }
4
+ let(:url) { ENV['MOODLE_URL'] || 'localhost:8888/moodle28' }
5
+ let(:token) { ENV['MOODLE_TOKEN'] || '60fc9c9415259404795094957e4ab32f' }
6
6
  let(:moodle_rb) { MoodleRb.new(token, url) }
7
7
 
8
8
  describe 'new' do