mumuki-laboratory 8.3.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/mumuki_laboratory/application/codemirror.js +1 -1
  3. data/app/assets/javascripts/mumuki_laboratory/application/upload.js +69 -14
  4. data/app/assets/stylesheets/mumuki_laboratory/application.scss +1 -0
  5. data/app/assets/stylesheets/mumuki_laboratory/application/_codemirror-themes.scss +1 -0
  6. data/app/assets/stylesheets/mumuki_laboratory/application/_layout.scss +3 -0
  7. data/app/assets/stylesheets/mumuki_laboratory/application/_modules.scss +1 -0
  8. data/app/assets/stylesheets/mumuki_laboratory/application/codemirror-themes/_mu-light.scss +3 -0
  9. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_content_show.scss +15 -2
  10. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +31 -8
  11. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_medal.scss +1 -1
  12. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_menu.scss +35 -0
  13. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss +11 -0
  14. data/app/controllers/api/base_controller.rb +0 -1
  15. data/app/controllers/api/courses_controller.rb +1 -1
  16. data/app/controllers/api/organizations_controller.rb +5 -2
  17. data/app/controllers/api/roles_controller.rb +4 -0
  18. data/app/controllers/api/users_controller.rb +6 -1
  19. data/app/controllers/application_controller.rb +1 -1
  20. data/app/controllers/concerns/with_authorization.rb +1 -16
  21. data/app/controllers/concerns/with_user_params.rb +4 -0
  22. data/app/controllers/discussions_messages_controller.rb +0 -1
  23. data/app/controllers/exam_authorization_requests_controller.rb +26 -0
  24. data/app/controllers/exam_registrations_controller.rb +6 -0
  25. data/app/controllers/users_controller.rb +8 -5
  26. data/app/helpers/application_helper.rb +4 -0
  27. data/app/helpers/breadcrumbs_helper.rb +4 -0
  28. data/app/helpers/content_view_helper.rb +19 -0
  29. data/app/helpers/exercise_input_helper.rb +8 -17
  30. data/app/helpers/icons_helper.rb +3 -11
  31. data/app/helpers/links_helper.rb +2 -2
  32. data/app/helpers/menu_bar_helper.rb +3 -3
  33. data/app/helpers/overlapped_buttons_helper.rb +10 -6
  34. data/app/helpers/progress_bar_helper.rb +2 -2
  35. data/app/helpers/user_menu_helper.rb +18 -0
  36. data/app/views/chapters/show.html.erb +17 -16
  37. data/app/views/complements/show.html.erb +1 -1
  38. data/app/views/discussions/_message.html.erb +7 -7
  39. data/app/views/exam_authorization_requests/show.html.erb +17 -0
  40. data/app/views/exam_registrations/show.html.erb +37 -0
  41. data/app/views/exams/show.html.erb +1 -1
  42. data/app/views/{layouts → exercises}/_exercise_skipped.html.erb +0 -0
  43. data/app/views/exercises/_exercise_title_icons.html.erb +4 -0
  44. data/app/views/exercises/show.html.erb +5 -8
  45. data/app/views/{layouts → guides}/_guide.html.erb +3 -3
  46. data/app/views/guides/_guide_container.html.erb +24 -0
  47. data/app/views/{layouts → guides}/_guide_title_icons.html.erb +1 -3
  48. data/app/views/layouts/_progress_bar.html.erb +9 -7
  49. data/app/views/layouts/_progress_listing.html.erb +5 -5
  50. data/app/views/layouts/_user_menu.html.erb +21 -0
  51. data/app/views/layouts/application.html.erb +1 -6
  52. data/app/views/layouts/exercise_inputs/editors/_upload.html.erb +11 -2
  53. data/app/views/lessons/show.html.erb +1 -1
  54. data/app/views/notifications/_discussion.html.erb +1 -0
  55. data/app/views/notifications/_dropdown.html.erb +13 -0
  56. data/app/views/notifications/_exam_authorization_request.html.erb +1 -0
  57. data/app/views/notifications/_exam_registration.html.erb +1 -0
  58. data/app/views/notifications/_message.html.erb +1 -0
  59. data/app/views/users/_user_form.html.erb +10 -8
  60. data/app/views/users/discussions.html.erb +28 -0
  61. data/app/views/users/edit.html.erb +1 -1
  62. data/app/views/users/messages.html.erb +27 -0
  63. data/app/views/users/show.html.erb +4 -51
  64. data/app/views/users/terms.html.erb +2 -2
  65. data/config/routes.rb +6 -0
  66. data/lib/mumuki/laboratory/controllers/notifications.rb +3 -22
  67. data/lib/mumuki/laboratory/locales/en.yml +35 -18
  68. data/lib/mumuki/laboratory/locales/es-CL.yml +26 -9
  69. data/lib/mumuki/laboratory/locales/es.yml +31 -15
  70. data/lib/mumuki/laboratory/locales/pt.yml +28 -11
  71. data/lib/mumuki/laboratory/version.rb +1 -1
  72. data/spec/controllers/exam_authorization_requests_controller_spec.rb +40 -0
  73. data/spec/controllers/exam_registrations_controller_spec.rb +19 -0
  74. data/spec/controllers/organizations_api_controller_spec.rb +16 -9
  75. data/spec/dummy/db/schema.rb +24 -0
  76. data/spec/features/exercise_flow_spec.rb +3 -3
  77. data/spec/features/login_flow_spec.rb +1 -1
  78. data/spec/features/menu_bar_spec.rb +24 -24
  79. data/spec/features/notifications_flow_spec.rb +46 -0
  80. data/spec/features/profile_flow_spec.rb +6 -9
  81. data/spec/features/terms_flow_spec.rb +30 -0
  82. data/spec/javascripts/bridge-spec.js +2 -2
  83. data/spec/javascripts/csrf-token-spec.js +2 -2
  84. data/spec/javascripts/editors-spec.js +7 -9
  85. data/spec/javascripts/elipsis-spec.js +4 -4
  86. data/spec/javascripts/events-spec.js +7 -7
  87. data/spec/javascripts/exercise-spec.js +7 -8
  88. data/spec/javascripts/global-spec.js +3 -3
  89. data/spec/javascripts/i18n-spec.js +23 -20
  90. data/spec/javascripts/kids-button-spec.js +6 -8
  91. data/spec/javascripts/results-renderers-spec.js +5 -5
  92. data/spec/javascripts/speech-bubble-renderer-spec.js +2 -3
  93. data/spec/javascripts/submissions-store-spec.js +14 -14
  94. data/spec/javascripts/sync-mode-spec.js +3 -3
  95. data/spec/javascripts/timeout-spec.js +2 -2
  96. data/spec/javascripts/timer-spec.js +2 -2
  97. data/spec/javascripts/upload-spec.js +80 -0
  98. metadata +129 -103
  99. data/app/views/layouts/_guide_container.html.erb +0 -28
@@ -1,17 +1,17 @@
1
1
  describe('results renderers', () => {
2
2
  it('can compute class for status', () => {
3
3
  expect(mumuki.renderers.classForStatus('passed')).toEqual('success');
4
- })
4
+ });
5
5
 
6
6
  it('can compute icon for status', () => {
7
7
  expect(mumuki.renderers.iconForStatus('pending')).toEqual('fa-circle');
8
- })
8
+ });
9
9
 
10
10
  it('can compute progress list item for status', () => {
11
11
  expect(mumuki.renderers.progressListItemClassForStatus('passed_with_warnings')).toEqual('progress-list-item text-center warning ');
12
- })
12
+ });
13
13
 
14
14
  it('can compute progress list item for status when active', () => {
15
15
  expect(mumuki.renderers.progressListItemClassForStatus('failed', true)).toEqual('progress-list-item text-center danger active');
16
- })
17
- })
16
+ });
17
+ });
@@ -6,6 +6,5 @@ describe('results renderers', () => {
6
6
  <li>fix that</li>
7
7
  </ul>
8
8
  </div>`);
9
- })
10
-
11
- })
9
+ });
10
+ });
@@ -6,39 +6,39 @@ describe("SubmissionsStore", () => {
6
6
  const passedEmptyProgramSubmissionAndResult = { submission: emptyProgramSubmission, result: passedSubmissionResult };
7
7
 
8
8
  beforeEach(() => {
9
- window.localStorage.clear()
9
+ window.localStorage.clear();
10
10
  });
11
11
 
12
12
  describe('getLastSubmission', () => {
13
13
  it("answers null if submission not present", () => {
14
- expect(mumuki.SubmissionsStore.getLastSubmissionAndResult(1)).toBe(null)
14
+ expect(mumuki.SubmissionsStore.getLastSubmissionAndResult(1)).toBe(null);
15
15
  });
16
16
 
17
17
  it("answers the last submission result if already sent", () => {
18
- mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
19
- expect(mumuki.SubmissionsStore.getLastSubmissionAndResult(1)).toEqual(passedEmptyProgramSubmissionAndResult)
18
+ mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult);
19
+ expect(mumuki.SubmissionsStore.getLastSubmissionAndResult(1)).toEqual(passedEmptyProgramSubmissionAndResult);
20
20
  });
21
21
  });
22
22
 
23
23
  describe('getLastSubmissionStatus', () => {
24
24
  it("answers pending if submission not present", () => {
25
- expect(mumuki.SubmissionsStore.getLastSubmissionStatus(1)).toBe('pending')
25
+ expect(mumuki.SubmissionsStore.getLastSubmissionStatus(1)).toBe('pending');
26
26
  });
27
27
 
28
28
  it("answers the last submission status if previously sent", () => {
29
- mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
30
- expect(mumuki.SubmissionsStore.getLastSubmissionStatus(1)).toBe('passed')
29
+ mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult);
30
+ expect(mumuki.SubmissionsStore.getLastSubmissionStatus(1)).toBe('passed');
31
31
  });
32
32
  });
33
33
 
34
34
  describe('getCachedResultFor', () => {
35
35
  it("answers null if submission not present", () => {
36
- expect(mumuki.SubmissionsStore.getSubmissionResultFor(1, emptyProgramSubmission)).toBe(null)
36
+ expect(mumuki.SubmissionsStore.getSubmissionResultFor(1, emptyProgramSubmission)).toBe(null);
37
37
  });
38
38
 
39
39
  it("answers the last submission if previously sent", () => {
40
- mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
41
- expect(mumuki.SubmissionsStore.getSubmissionResultFor(1, emptyProgramSubmission)).toEqual(passedSubmissionResult)
40
+ mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult);
41
+ expect(mumuki.SubmissionsStore.getSubmissionResultFor(1, emptyProgramSubmission)).toEqual(passedSubmissionResult);
42
42
  });
43
43
  });
44
44
 
@@ -90,7 +90,7 @@ describe("SubmissionsStore", () => {
90
90
  {solution: {content: ''}},
91
91
  {solution: {content: 'bar'}})).toBe(false);
92
92
  });
93
- })
93
+ });
94
94
 
95
95
  describe('classic submissons', () => {
96
96
  it("answers true when they are equal", () => {
@@ -122,7 +122,7 @@ describe("SubmissionsStore", () => {
122
122
  {'solution[content]': ''},
123
123
  {'solution[content]': 'bar'})).toBe(false);
124
124
  });
125
- })
125
+ });
126
126
 
127
127
  describe('multifile submissions', () => {
128
128
  it("answers true when they are equal", () => {
@@ -172,6 +172,6 @@ describe("SubmissionsStore", () => {
172
172
  'solution[content[index.html]]': 'html foo'
173
173
  })).toBe(false);
174
174
  });
175
- })
175
+ });
176
176
  });
177
- })
177
+ });
@@ -4,12 +4,12 @@ describe('sync mode', () => {
4
4
  mumuki.syncMode._selectSyncMode();
5
5
 
6
6
  expect(mumuki.syncMode._current instanceof mumuki.syncMode.ServerSyncMode).toBe(true);
7
- })
7
+ });
8
8
 
9
9
  it('can choose local mode', () => {
10
10
  mumuki.incognitoUser = true;
11
11
  mumuki.syncMode._selectSyncMode();
12
12
 
13
13
  expect(mumuki.syncMode._current instanceof mumuki.syncMode.ClientSyncMode).toBe(true);
14
- })
15
- })
14
+ });
15
+ });
@@ -1,5 +1,5 @@
1
1
  describe('setTimeout', () => {
2
2
  it('can create setTimeout', () => {
3
3
  expect(mumuki.setTimeout).not.toBe(null);
4
- })
5
- })
4
+ });
5
+ });
@@ -1,5 +1,5 @@
1
1
  describe('timer', () => {
2
2
  it('can create timer', () => {
3
3
  expect(mumuki.startTimer).not.toBe(null);
4
- })
5
- })
4
+ });
5
+ });
@@ -0,0 +1,80 @@
1
+ describe('upload', () => {
2
+ const fileSizeLimit = 20;
3
+
4
+ fixture.set(`
5
+ <textarea id="solution_content" type="text" name="solution[content]" class="hidden"></textarea>
6
+ <input id="mu-upload-input" type="file" class="upload submission-control hidden" mu-upload-file-limit=${fileSizeLimit} accept=".txt" />
7
+ <label id="mu-upload-label" for="mu-upload-input" class="btn btn-success"></label>
8
+ <button class="btn btn-success btn-block btn-submit disabled"></button>
9
+ <div id="mu-upload-file-limit-exceeded" class="hidden"></div>
10
+ `);
11
+
12
+ beforeEach(() => {
13
+ mumuki.upload._setUI();
14
+ });
15
+
16
+ function reader(file, done) {
17
+ let fileReader = new mumuki.upload.FileUploader(file).uploadFileIfValid();
18
+ if (fileReader) {
19
+ fileReader.addEventListener('load', () => done());
20
+ fileReader.addEventListener('error', done);
21
+ return fileReader;
22
+ } else {
23
+ done();
24
+ }
25
+ }
26
+
27
+ describe('no file is uploaded', () => {
28
+ beforeEach((done) => {
29
+ reader(null, done);
30
+ });
31
+
32
+ it('loads no solution', function () {
33
+ expect($('#solution_content').html()).toEqual('');
34
+ });
35
+
36
+ it('does not allow submitting', function () {
37
+ expect($('.btn-submit').hasClass('disabled')).toBe(true);
38
+ });
39
+
40
+ it('does not exceed max file size', function () {
41
+ expect($('#mu-upload-file-limit-exceeded').hasClass('hidden')).toBe(true);
42
+ });
43
+ });
44
+
45
+ describe('small file is uploaded', () => {
46
+ beforeEach((done) => {
47
+ reader(new File(["short solution"], "short.txt"), done);
48
+ });
49
+
50
+ it('loads solution', function () {
51
+ expect($('#solution_content').html()).toEqual('short solution');
52
+ });
53
+
54
+ it('allows submitting', function () {
55
+ expect($('.btn-submit').hasClass('disabled')).toBe(false);
56
+ });
57
+
58
+ it('does not exceed max file size', function () {
59
+ expect($('#mu-upload-file-limit-exceeded').hasClass('hidden')).toBe(true);
60
+ });
61
+ });
62
+
63
+ describe('large file is uploaded', () => {
64
+ beforeEach((done) => {
65
+ reader(new File(["solution that is too long to be allowed"], "long.txt"), done);
66
+ });
67
+
68
+ it('loads no solution', function () {
69
+ expect($('#solution_content').html()).toEqual('');
70
+ });
71
+
72
+ it('does not allow submitting', function () {
73
+ expect($('.btn-submit').hasClass('disabled')).toBe(true);
74
+ });
75
+
76
+ it('exceeds max file size', function () {
77
+ expect($('#mu-upload-file-limit-exceeded').hasClass('hidden')).toBe(false);
78
+ });
79
+ });
80
+ });
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumuki-laboratory
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.3.0
4
+ version: 9.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Bulgarelli
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-21 00:00:00.000000000 Z
11
+ date: 2021-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 8.3.0
33
+ version: 9.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 8.3.0
40
+ version: 9.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mumukit-bridge
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '7.3'
61
+ version: '7.6'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '7.3'
68
+ version: '7.6'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mumukit-nuntius
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -399,6 +399,7 @@ files:
399
399
  - app/assets/javascripts/mumuki_laboratory/application/user.js
400
400
  - app/assets/stylesheets/mumuki_laboratory/application.scss
401
401
  - app/assets/stylesheets/mumuki_laboratory/application/_alerts.scss
402
+ - app/assets/stylesheets/mumuki_laboratory/application/_codemirror-themes.scss
402
403
  - app/assets/stylesheets/mumuki_laboratory/application/_errors.scss
403
404
  - app/assets/stylesheets/mumuki_laboratory/application/_fonts.scss
404
405
  - app/assets/stylesheets/mumuki_laboratory/application/_invitations.scss
@@ -408,6 +409,7 @@ files:
408
409
  - app/assets/stylesheets/mumuki_laboratory/application/_modules.scss
409
410
  - app/assets/stylesheets/mumuki_laboratory/application/_tooltip.scss
410
411
  - app/assets/stylesheets/mumuki_laboratory/application/_vendor.scss
412
+ - app/assets/stylesheets/mumuki_laboratory/application/codemirror-themes/_mu-light.scss
411
413
  - app/assets/stylesheets/mumuki_laboratory/application/hovers.scss
412
414
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_avatar.scss
413
415
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss
@@ -438,6 +440,7 @@ files:
438
440
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_terms.scss
439
441
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_timer.scss
440
442
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_upload.scss
443
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_user_menu.scss
441
444
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss
442
445
  - app/controllers/ajax_controller.rb
443
446
  - app/controllers/api/base_controller.rb
@@ -463,6 +466,8 @@ files:
463
466
  - app/controllers/concerns/with_user_params.rb
464
467
  - app/controllers/discussions_controller.rb
465
468
  - app/controllers/discussions_messages_controller.rb
469
+ - app/controllers/exam_authorization_requests_controller.rb
470
+ - app/controllers/exam_registrations_controller.rb
466
471
  - app/controllers/exams_controller.rb
467
472
  - app/controllers/exercise_confirmations_controller.rb
468
473
  - app/controllers/exercise_query_controller.rb
@@ -491,6 +496,7 @@ files:
491
496
  - app/helpers/concerns/with_student_path_navigation/finish_navigation.rb
492
497
  - app/helpers/concerns/with_student_path_navigation/navigation.rb
493
498
  - app/helpers/concerns/with_student_path_navigation/revisit_navigation.rb
499
+ - app/helpers/content_view_helper.rb
494
500
  - app/helpers/contextualization_result_helper.rb
495
501
  - app/helpers/discussions_helper.rb
496
502
  - app/helpers/editor_helper.rb
@@ -514,6 +520,7 @@ files:
514
520
  - app/helpers/progress_bar_helper.rb
515
521
  - app/helpers/progress_helper.rb
516
522
  - app/helpers/runner_assets_helper.rb
523
+ - app/helpers/user_menu_helper.rb
517
524
  - app/mailers/application_mailer.rb
518
525
  - app/mailers/user_mailer.rb
519
526
  - app/views/appendixes/show.html.erb
@@ -535,6 +542,8 @@ files:
535
542
  - app/views/errors/internal_server_error.html.erb
536
543
  - app/views/errors/not_found.html.erb
537
544
  - app/views/errors/unauthorized.html.erb
545
+ - app/views/exam_authorization_requests/show.html.erb
546
+ - app/views/exam_registrations/show.html.erb
538
547
  - app/views/exams/show.html.erb
539
548
  - app/views/exercise_solutions/_assistant_rules_box.html.erb
540
549
  - app/views/exercise_solutions/_contextualization_results_body.html.erb
@@ -549,18 +558,19 @@ files:
549
558
  - app/views/exercise_solutions/_results_hidden.html.erb
550
559
  - app/views/exercise_solutions/_results_title.html.erb
551
560
  - app/views/exercises/_exercise_assignment.html.erb
561
+ - app/views/exercises/_exercise_skipped.html.erb
562
+ - app/views/exercises/_exercise_title_icons.html.erb
552
563
  - app/views/exercises/_read_only.html.erb
553
564
  - app/views/exercises/show.html.erb
565
+ - app/views/guides/_guide.html.erb
566
+ - app/views/guides/_guide_container.html.erb
567
+ - app/views/guides/_guide_title_icons.html.erb
554
568
  - app/views/invitations/_invitation_form.html.erb
555
569
  - app/views/invitations/show.html.erb
556
570
  - app/views/layouts/_authoring.html.erb
557
571
  - app/views/layouts/_copyright.html.erb
558
572
  - app/views/layouts/_discussions.html.erb
559
573
  - app/views/layouts/_error.html.erb
560
- - app/views/layouts/_exercise_skipped.html.erb
561
- - app/views/layouts/_guide.html.erb
562
- - app/views/layouts/_guide_container.html.erb
563
- - app/views/layouts/_guide_title_icons.html.erb
564
574
  - app/views/layouts/_kids.html.erb
565
575
  - app/views/layouts/_kindergarten.html.erb
566
576
  - app/views/layouts/_main.html.erb
@@ -579,6 +589,7 @@ files:
579
589
  - app/views/layouts/_terms_acceptance_disclaimer.html.erb
580
590
  - app/views/layouts/_test_results.html.erb
581
591
  - app/views/layouts/_timer.html.erb
592
+ - app/views/layouts/_user_menu.html.erb
582
593
  - app/views/layouts/application.html.erb
583
594
  - app/views/layouts/embedded.html.erb
584
595
  - app/views/layouts/exercise_inputs/editors/_code.html.erb
@@ -621,6 +632,11 @@ files:
621
632
  - app/views/layouts/modals/_new_message.html.erb
622
633
  - app/views/lessons/show.html.erb
623
634
  - app/views/messages/errors.html.erb
635
+ - app/views/notifications/_discussion.html.erb
636
+ - app/views/notifications/_dropdown.html.erb
637
+ - app/views/notifications/_exam_authorization_request.html.erb
638
+ - app/views/notifications/_exam_registration.html.erb
639
+ - app/views/notifications/_message.html.erb
624
640
  - app/views/user_mailer/1st_reminder.html.erb
625
641
  - app/views/user_mailer/1st_reminder.text.erb
626
642
  - app/views/user_mailer/2nd_reminder.html.erb
@@ -634,7 +650,9 @@ files:
634
650
  - app/views/users/_profile_fields.html.erb
635
651
  - app/views/users/_term.html.erb
636
652
  - app/views/users/_user_form.html.erb
653
+ - app/views/users/discussions.html.erb
637
654
  - app/views/users/edit.html.erb
655
+ - app/views/users/messages.html.erb
638
656
  - app/views/users/show.html.erb
639
657
  - app/views/users/terms.html.erb
640
658
  - config/i18n-tasks.yml
@@ -687,6 +705,8 @@ files:
687
705
  - spec/controllers/courses_api_controller_spec.rb
688
706
  - spec/controllers/discussions_controller_spec.rb
689
707
  - spec/controllers/discussions_messages_controller_spec.rb
708
+ - spec/controllers/exam_authorization_requests_controller_spec.rb
709
+ - spec/controllers/exam_registrations_controller_spec.rb
690
710
  - spec/controllers/exercise_solutions_controller_spec.rb
691
711
  - spec/controllers/guide_progress_controller_spec.rb
692
712
  - spec/controllers/invitations_controller_spec.rb
@@ -762,6 +782,7 @@ files:
762
782
  - spec/features/menu_bar_spec.rb
763
783
  - spec/features/not_found_private_flow_spec.rb
764
784
  - spec/features/not_found_public_flow_spec.rb
785
+ - spec/features/notifications_flow_spec.rb
765
786
  - spec/features/profile_flow_spec.rb
766
787
  - spec/features/progressive_tips_spec.rb
767
788
  - spec/features/runner_assets_spec.rb
@@ -796,6 +817,7 @@ files:
796
817
  - spec/javascripts/sync-mode-spec.js
797
818
  - spec/javascripts/timeout-spec.js
798
819
  - spec/javascripts/timer-spec.js
820
+ - spec/javascripts/upload-spec.js
799
821
  - spec/login_helper.rb
800
822
  - spec/mailers/previews/user_mailer_preview.rb
801
823
  - spec/mailers/user_mailer_spec.rb
@@ -845,7 +867,7 @@ homepage: https://mumuki.io
845
867
  licenses:
846
868
  - AGPL-3.0
847
869
  metadata: {}
848
- post_install_message:
870
+ post_install_message:
849
871
  rdoc_options: []
850
872
  require_paths:
851
873
  - lib
@@ -860,131 +882,135 @@ required_rubygems_version: !ruby/object:Gem::Requirement
860
882
  - !ruby/object:Gem::Version
861
883
  version: '0'
862
884
  requirements: []
863
- rubyforge_project:
885
+ rubyforge_project:
864
886
  rubygems_version: 2.7.6
865
- signing_key:
887
+ signing_key:
866
888
  specification_version: 4
867
889
  summary: Code assement web application for the Mumuki Platform.
868
890
  test_files:
891
+ - spec/controllers/invitations_controller_spec.rb
892
+ - spec/controllers/discussions_controller_spec.rb
893
+ - spec/controllers/api_clients_controller.rb
894
+ - spec/controllers/guide_progress_controller_spec.rb
895
+ - spec/controllers/exercise_solutions_controller_spec.rb
896
+ - spec/controllers/courses_api_controller_spec.rb
897
+ - spec/controllers/exam_registrations_controller_spec.rb
898
+ - spec/controllers/students_api_controller_spec.rb
899
+ - spec/controllers/messages_controller_spec.rb
900
+ - spec/controllers/exam_authorization_requests_controller_spec.rb
901
+ - spec/controllers/confirmations_controller_spec.rb
902
+ - spec/controllers/discussions_messages_controller_spec.rb
903
+ - spec/controllers/users_api_controller_spec.rb
904
+ - spec/controllers/chapters_controller_spec.rb
905
+ - spec/controllers/organizations_api_controller_spec.rb
906
+ - spec/controllers/users_controller_spec.rb
907
+ - spec/evaluation_helper.rb
908
+ - spec/capybara_helper.rb
909
+ - spec/login_helper.rb
910
+ - spec/mailers/previews/user_mailer_preview.rb
911
+ - spec/mailers/user_mailer_spec.rb
869
912
  - spec/spec_helper.rb
870
- - spec/teaspoon_env.rb
871
913
  - spec/dummy/package.json
872
- - spec/dummy/config.ru
873
- - spec/dummy/db/seeds.rb
874
- - spec/dummy/db/schema.rb
914
+ - spec/dummy/bin/bundle
915
+ - spec/dummy/bin/update
916
+ - spec/dummy/bin/setup
917
+ - spec/dummy/bin/rake
918
+ - spec/dummy/bin/rails
919
+ - spec/dummy/bin/yarn
920
+ - spec/dummy/public/character/kibi/jump.svg
921
+ - spec/dummy/public/character/kibi/context.svg
922
+ - spec/dummy/public/character/kibi/success_l.svg
923
+ - spec/dummy/public/character/kibi/failure.svg
924
+ - spec/dummy/public/character/kibi/success2_l.svg
925
+ - spec/dummy/public/character/kibi/passed_with_warnings.svg
926
+ - spec/dummy/public/character/magnifying_glass/apparition.svg
927
+ - spec/dummy/public/character/magnifying_glass/loop.svg
928
+ - spec/dummy/public/character/animations.json
875
929
  - spec/dummy/public/medal/outline.svg
930
+ - spec/dummy/public/error/403.svg
931
+ - spec/dummy/public/error/410.svg
932
+ - spec/dummy/public/error/401.svg
876
933
  - spec/dummy/public/error/404.svg
877
934
  - spec/dummy/public/error/500.svg
878
- - spec/dummy/public/error/timeout_2.svg
879
- - spec/dummy/public/error/401.svg
880
935
  - spec/dummy/public/error/timeout_1.svg
881
936
  - spec/dummy/public/error/timeout_3.svg
882
- - spec/dummy/public/error/403.svg
883
- - spec/dummy/public/error/410.svg
884
- - spec/dummy/public/character/magnifying_glass/loop.svg
885
- - spec/dummy/public/character/magnifying_glass/apparition.svg
886
- - spec/dummy/public/character/kibi/passed_with_warnings.svg
887
- - spec/dummy/public/character/kibi/success_l.svg
888
- - spec/dummy/public/character/kibi/success2_l.svg
889
- - spec/dummy/public/character/kibi/jump.svg
890
- - spec/dummy/public/character/kibi/context.svg
891
- - spec/dummy/public/character/kibi/failure.svg
892
- - spec/dummy/public/character/animations.json
893
- - spec/dummy/config/environment.rb
894
- - spec/dummy/config/secrets.yml
895
- - spec/dummy/config/puma.rb
937
+ - spec/dummy/public/error/timeout_2.svg
938
+ - spec/dummy/config.ru
939
+ - spec/dummy/db/schema.rb
940
+ - spec/dummy/db/seeds.rb
896
941
  - spec/dummy/config/application.rb
897
- - spec/dummy/config/initializers/cookies_serializer.rb
942
+ - spec/dummy/config/boot.rb
898
943
  - spec/dummy/config/initializers/filter_parameter_logging.rb
899
- - spec/dummy/config/initializers/assets.rb
944
+ - spec/dummy/config/initializers/cookies_serializer.rb
900
945
  - spec/dummy/config/initializers/wrap_parameters.rb
901
- - spec/dummy/config/cable.yml
902
- - spec/dummy/config/routes.rb
946
+ - spec/dummy/config/initializers/assets.rb
947
+ - spec/dummy/config/puma.rb
948
+ - spec/dummy/config/environments/development.rb
949
+ - spec/dummy/config/environments/test.rb
903
950
  - spec/dummy/config/database.yml
951
+ - spec/dummy/config/locales/en.yml
952
+ - spec/dummy/config/secrets.yml
953
+ - spec/dummy/config/environment.rb
904
954
  - spec/dummy/config/spring.rb
905
- - spec/dummy/config/environments/test.rb
906
- - spec/dummy/config/environments/development.rb
907
- - spec/dummy/config/boot.rb
955
+ - spec/dummy/config/cable.yml
908
956
  - spec/dummy/config/rabbit.yml
909
- - spec/dummy/config/locales/en.yml
957
+ - spec/dummy/config/routes.rb
910
958
  - spec/dummy/Rakefile
911
- - spec/dummy/bin/rake
912
- - spec/dummy/bin/setup
913
- - spec/dummy/bin/bundle
914
- - spec/dummy/bin/rails
915
- - spec/dummy/bin/yarn
916
- - spec/dummy/bin/update
917
- - spec/mailers/user_mailer_spec.rb
918
- - spec/mailers/previews/user_mailer_preview.rb
919
959
  - spec/api_helper.rb
920
- - spec/features/runner_assets_spec.rb
960
+ - spec/features/profile_flow_spec.rb
961
+ - spec/features/not_found_public_flow_spec.rb
962
+ - spec/features/home_private_flow_spec.rb
963
+ - spec/features/login_flow_spec.rb
921
964
  - spec/features/links_flow_spec.rb
922
- - spec/features/not_found_private_flow_spec.rb
923
- - spec/features/progressive_tips_spec.rb
924
- - spec/features/disabled_organization_flow_spec.rb
925
965
  - spec/features/complements_flow_spec.rb
926
- - spec/features/profile_flow_spec.rb
966
+ - spec/features/notifications_flow_spec.rb
967
+ - spec/features/topic_flow_spec.rb
927
968
  - spec/features/guide_reset_spec.rb
928
969
  - spec/features/menu_bar_spec.rb
929
- - spec/features/guides_flow_spec.rb
930
- - spec/features/exams_flow_spec.rb
970
+ - spec/features/disabled_organization_flow_spec.rb
931
971
  - spec/features/dynamic_exam_spec.rb
932
- - spec/features/discussion_flow_spec.rb
933
- - spec/features/chapters_flow_spec.rb
934
- - spec/features/login_flow_spec.rb
935
- - spec/features/disable_user_flow_spec.rb
972
+ - spec/features/standard_flow_spec.rb
936
973
  - spec/features/home_public_flow_spec.rb
937
- - spec/features/home_private_flow_spec.rb
974
+ - spec/features/chapters_flow_spec.rb
975
+ - spec/features/not_found_private_flow_spec.rb
976
+ - spec/features/immersive_redirection_spec.rb
938
977
  - spec/features/terms_flow_spec.rb
978
+ - spec/features/progressive_tips_spec.rb
939
979
  - spec/features/lessons_flow_spec.rb
940
- - spec/features/topic_flow_spec.rb
941
- - spec/features/standard_flow_spec.rb
942
- - spec/features/immersive_redirection_spec.rb
943
- - spec/features/not_found_public_flow_spec.rb
944
- - spec/features/exercise_flow_spec.rb
980
+ - spec/features/disable_user_flow_spec.rb
945
981
  - spec/features/invitations_flow_spec.rb
946
- - spec/capybara_helper.rb
947
- - spec/evaluation_helper.rb
948
- - spec/javascripts/submissions-store-spec.js
949
- - spec/javascripts/exercise-spec.js
950
- - spec/javascripts/spec-helper.js
951
- - spec/javascripts/results-renderers-spec.js
982
+ - spec/features/guides_flow_spec.rb
983
+ - spec/features/runner_assets_spec.rb
984
+ - spec/features/discussion_flow_spec.rb
985
+ - spec/features/exercise_flow_spec.rb
986
+ - spec/features/exams_flow_spec.rb
952
987
  - spec/javascripts/i18n-spec.js
953
- - spec/javascripts/timer-spec.js
954
- - spec/javascripts/elipsis-spec.js
955
- - spec/javascripts/gamification-spec.js
956
988
  - spec/javascripts/bridge-spec.js
957
989
  - spec/javascripts/timeout-spec.js
990
+ - spec/javascripts/results-renderers-spec.js
991
+ - spec/javascripts/kids-button-spec.js
992
+ - spec/javascripts/timer-spec.js
993
+ - spec/javascripts/sync-mode-spec.js
958
994
  - spec/javascripts/events-spec.js
959
995
  - spec/javascripts/editors-spec.js
960
- - spec/javascripts/sync-mode-spec.js
961
- - spec/javascripts/speech-bubble-renderer-spec.js
962
- - spec/javascripts/global-spec.js
963
- - spec/javascripts/kids-button-spec.js
996
+ - spec/javascripts/exercise-spec.js
997
+ - spec/javascripts/elipsis-spec.js
998
+ - spec/javascripts/upload-spec.js
999
+ - spec/javascripts/spec-helper.js
1000
+ - spec/javascripts/submissions-store-spec.js
1001
+ - spec/javascripts/gamification-spec.js
964
1002
  - spec/javascripts/csrf-token-spec.js
965
- - spec/controllers/users_controller_spec.rb
966
- - spec/controllers/messages_controller_spec.rb
967
- - spec/controllers/students_api_controller_spec.rb
968
- - spec/controllers/chapters_controller_spec.rb
969
- - spec/controllers/confirmations_controller_spec.rb
970
- - spec/controllers/courses_api_controller_spec.rb
971
- - spec/controllers/api_clients_controller.rb
972
- - spec/controllers/discussions_controller_spec.rb
973
- - spec/controllers/invitations_controller_spec.rb
974
- - spec/controllers/users_api_controller_spec.rb
975
- - spec/controllers/discussions_messages_controller_spec.rb
976
- - spec/controllers/exercise_solutions_controller_spec.rb
977
- - spec/controllers/organizations_api_controller_spec.rb
978
- - spec/controllers/guide_progress_controller_spec.rb
979
- - spec/login_helper.rb
980
- - spec/helpers/page_title_helper_spec.rb
981
- - spec/helpers/icons_helper_spec.rb
982
- - spec/helpers/breadcrumbs_helper_spec.rb
983
- - spec/helpers/test_results_rendering_spec.rb
984
- - spec/helpers/application_helper_spec.rb
985
- - spec/helpers/avatar_helper_spec.rb
986
- - spec/helpers/authors_helper_spec.rb
987
- - spec/helpers/with_choices_spec.rb
1003
+ - spec/javascripts/global-spec.js
1004
+ - spec/javascripts/speech-bubble-renderer-spec.js
1005
+ - spec/teaspoon_env.rb
988
1006
  - spec/helpers/exercise_input_helper_spec.rb
1007
+ - spec/helpers/application_helper_spec.rb
1008
+ - spec/helpers/page_title_helper_spec.rb
989
1009
  - spec/helpers/with_navigation_spec.rb
1010
+ - spec/helpers/authors_helper_spec.rb
990
1011
  - spec/helpers/email_helper_spec.rb
1012
+ - spec/helpers/with_choices_spec.rb
1013
+ - spec/helpers/avatar_helper_spec.rb
1014
+ - spec/helpers/icons_helper_spec.rb
1015
+ - spec/helpers/test_results_rendering_spec.rb
1016
+ - spec/helpers/breadcrumbs_helper_spec.rb