mumuki-laboratory 8.2.0 → 8.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -8
  3. data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +2 -1
  4. data/app/assets/javascripts/mumuki_laboratory/application/button.js +0 -2
  5. data/app/assets/javascripts/mumuki_laboratory/application/codemirror.js +1 -1
  6. data/app/assets/javascripts/mumuki_laboratory/application/i18n.js +73 -0
  7. data/app/assets/javascripts/mumuki_laboratory/application/kids.js +22 -1
  8. data/app/assets/javascripts/mumuki_laboratory/application/kindergarten.js +6 -1
  9. data/app/assets/javascripts/mumuki_laboratory/application/primary.js +5 -3
  10. data/app/assets/javascripts/mumuki_laboratory/application/results-renderer.js +28 -1
  11. data/app/assets/javascripts/mumuki_laboratory/application/submission.js +72 -48
  12. data/app/assets/stylesheets/mumuki_laboratory/application.scss +1 -0
  13. data/app/assets/stylesheets/mumuki_laboratory/application/_codemirror-themes.scss +1 -0
  14. data/app/assets/stylesheets/mumuki_laboratory/application/codemirror-themes/_mu-light.scss +3 -0
  15. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +31 -8
  16. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +2 -3
  17. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss +1 -0
  18. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_terms.scss +4 -0
  19. data/app/controllers/application_controller.rb +1 -1
  20. data/app/controllers/chapters_controller.rb +9 -5
  21. data/app/controllers/exam_authorization_requests_controller.rb +26 -0
  22. data/app/controllers/exam_registrations_controller.rb +6 -0
  23. data/app/controllers/guide_container_controller.rb +2 -7
  24. data/app/helpers/application_helper.rb +4 -0
  25. data/app/helpers/contextualization_result_helper.rb +0 -8
  26. data/app/helpers/discussions_helper.rb +8 -0
  27. data/app/helpers/icons_helper.rb +3 -11
  28. data/app/helpers/menu_bar_helper.rb +6 -2
  29. data/app/helpers/overlapped_buttons_helper.rb +10 -6
  30. data/app/helpers/progress_bar_helper.rb +2 -2
  31. data/app/views/book_discussions/index.html.erb +3 -1
  32. data/app/views/chapters/show.html.erb +21 -9
  33. data/app/views/complements/show.html.erb +1 -1
  34. data/app/views/discussions/_message.html.erb +7 -7
  35. data/app/views/discussions/index.html.erb +11 -4
  36. data/app/views/exam_authorization_requests/show.html.erb +17 -0
  37. data/app/views/exam_registrations/show.html.erb +37 -0
  38. data/app/views/exams/show.html.erb +1 -1
  39. data/app/views/exercises/show.html.erb +2 -2
  40. data/app/views/layouts/_discussions.html.erb +0 -4
  41. data/app/views/layouts/_guide.html.erb +4 -33
  42. data/app/views/layouts/_guide_container.html.erb +28 -0
  43. data/app/views/layouts/_guide_title_icons.html.erb +9 -0
  44. data/app/views/layouts/_progress_bar.html.erb +9 -7
  45. data/app/views/layouts/_progress_listing.html.erb +5 -5
  46. data/app/views/layouts/_social_media.html.erb +2 -2
  47. data/app/views/layouts/application.html.erb +4 -7
  48. data/app/views/layouts/exercise_inputs/layouts/_input_kindergarten.html.erb +1 -1
  49. data/app/views/layouts/modals/_kindergarten_results_aborted.html.erb +1 -1
  50. data/app/views/lessons/show.html.erb +1 -1
  51. data/app/views/notifications/_discussion.html.erb +1 -0
  52. data/app/views/notifications/_dropdown.html.erb +13 -0
  53. data/app/views/notifications/_exam_authorization_request.html.erb +1 -0
  54. data/app/views/notifications/_exam_registration.html.erb +1 -0
  55. data/app/views/notifications/_message.html.erb +1 -0
  56. data/app/views/users/_term.html.erb +1 -1
  57. data/config/routes.rb +3 -0
  58. data/lib/mumuki/laboratory/controllers/notifications.rb +3 -22
  59. data/lib/mumuki/laboratory/controllers/results_rendering.rb +2 -1
  60. data/lib/mumuki/laboratory/locales/en.yml +31 -22
  61. data/lib/mumuki/laboratory/locales/es-CL.yml +23 -9
  62. data/lib/mumuki/laboratory/locales/es.yml +30 -22
  63. data/lib/mumuki/laboratory/locales/pt.yml +25 -16
  64. data/lib/mumuki/laboratory/version.rb +1 -1
  65. data/spec/controllers/exam_authorization_requests_controller_spec.rb +40 -0
  66. data/spec/controllers/exam_registrations_controller_spec.rb +19 -0
  67. data/spec/controllers/exercise_solutions_controller_spec.rb +3 -2
  68. data/spec/dummy/db/schema.rb +50 -1
  69. data/spec/dummy/public/character/animations.json +1 -0
  70. data/{public → spec/dummy/public}/character/kibi/context.svg +0 -0
  71. data/{public → spec/dummy/public}/character/kibi/failure.svg +0 -0
  72. data/{public → spec/dummy/public}/character/kibi/jump.svg +0 -0
  73. data/spec/dummy/public/character/kibi/passed_with_warnings.svg +4 -0
  74. data/{public → spec/dummy/public}/character/kibi/success2_l.svg +0 -0
  75. data/{public → spec/dummy/public}/character/kibi/success_l.svg +0 -0
  76. data/{public → spec/dummy/public}/character/magnifying_glass/apparition.svg +0 -0
  77. data/{public → spec/dummy/public}/character/magnifying_glass/loop.svg +0 -0
  78. data/spec/features/chapters_flow_spec.rb +112 -0
  79. data/spec/features/login_flow_spec.rb +1 -1
  80. data/spec/features/notifications_flow_spec.rb +46 -0
  81. data/spec/features/topic_flow_spec.rb +0 -1
  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 +82 -0
  90. data/spec/javascripts/kids-button-spec.js +34 -0
  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. metadata +125 -92
  98. data/spec/features/chapter_spec.rb +0 -70
@@ -1,10 +1,9 @@
1
1
  describe('exercise', () => {
2
-
3
2
  it('current exercise information is available when present', () => {
4
3
  $('body').html(`
5
4
  <input type="hidden" name="mu-exercise-id" id="mu-exercise-id" value="3361" />
6
5
  <input type="hidden" name="mu-exercise-layout" id="mu-exercise-layout" value="input_right" />
7
- <input type="hidden" name="mu-exercise-settings" id="mu-exercise-settings" value="{}" />`)
6
+ <input type="hidden" name="mu-exercise-settings" id="mu-exercise-settings" value="{}" />`);
8
7
 
9
8
  mumuki.exercise.load();
10
9
 
@@ -12,13 +11,13 @@ describe('exercise', () => {
12
11
  expect(mumuki.exercise.layout).toBe('input_right');
13
12
  expect(mumuki.exercise.settings).toEqual({});
14
13
  expect(mumuki.exercise.current).not.toBe(null);
15
- })
14
+ });
16
15
 
17
16
  it('current exercise information is available when present and settings are not empty', () => {
18
17
  $('body').html(`
19
18
  <input type="hidden" name="mu-exercise-id" id="mu-exercise-id" value="3361" />
20
19
  <input type="hidden" name="mu-exercise-layout" id="mu-exercise-layout" value="input_right" />
21
- <input type="hidden" name="mu-exercise-settings" id="mu-exercise-settings" value="{&quot;game_framework&quot;:true}" />`)
20
+ <input type="hidden" name="mu-exercise-settings" id="mu-exercise-settings" value="{&quot;game_framework&quot;:true}" />`);
22
21
 
23
22
  mumuki.exercise.load();
24
23
 
@@ -26,10 +25,10 @@ describe('exercise', () => {
26
25
  expect(mumuki.exercise.layout).toBe('input_right');
27
26
  expect(mumuki.exercise.settings.game_framework).toBe(true);
28
27
  expect(mumuki.exercise.current).not.toBe(null);
29
- })
28
+ });
30
29
 
31
30
  it('current exercise information is available when not present', () => {
32
- $('body').html(``)
31
+ $('body').html(``);
33
32
 
34
33
  mumuki.exercise.load();
35
34
 
@@ -37,5 +36,5 @@ describe('exercise', () => {
37
36
  expect(mumuki.exercise.layout).toBe(null);
38
37
  expect(mumuki.exercise.settings).toBe(null);
39
38
  expect(mumuki.exercise.current).toBe(null);
40
- })
41
- })
39
+ });
40
+ });
@@ -1,6 +1,6 @@
1
1
  describe("global loading", () => {
2
2
  it("produces no global loading errors", () => {
3
3
  const error = window['__globalLoadingError__'];
4
- expect(!error).toBe(true, `Expected no global loading errors but got ${error && error.message}`)
5
- })
6
- })
4
+ expect(!error).toBe(true, `Expected no global loading errors but got ${error && error.message}`);
5
+ });
6
+ });
@@ -0,0 +1,82 @@
1
+ describe('I18n', () => {
2
+ describe('t / translate', () => {
3
+ it('accept english translations', () => {
4
+ mumuki.locale = 'en';
5
+ expect(mumuki.I18n.translate('passed')).toBe('Everything is in order! Your solution passed all our tests!');
6
+ });
7
+
8
+ it('accept spanish translations', () => {
9
+ mumuki.locale = 'es';
10
+ expect(mumuki.I18n.translate('passed_with_warnings')).toBe('Tu solución funcionó, pero hay cosas que mejorar');
11
+ });
12
+
13
+ it('accept chilean translations', () => {
14
+ mumuki.locale = 'es-CL';
15
+ expect(mumuki.I18n.translate('failed')).toBe('Tu solución no pasó las pruebas');
16
+ });
17
+
18
+ it('accept portuguese translations', () => {
19
+ mumuki.locale = 'pt';
20
+ expect(mumuki.I18n.translate('errored')).toBe('Opa! Sua solução não pode ser executada');
21
+ });
22
+
23
+ it('fails when translation missing', () => {
24
+ mumuki.locale = 'en';
25
+ expect(mumuki.I18n.translate('foo')).toBe('Translation missing: en, `foo`');
26
+ });
27
+ });
28
+
29
+ describe('register', () => {
30
+ beforeEach(() => {
31
+ mumuki.locale = 'en';
32
+ mumuki.I18n.register({
33
+ en: {
34
+ greet: (data) => `Hi ${data.name}`,
35
+ errored: "D'Oh!"
36
+ }
37
+ });
38
+ });
39
+
40
+ it('overrides existing translation key', () => {
41
+ expect(mumuki.I18n.translate('errored')).toBe("D'Oh!");
42
+ });
43
+
44
+ it('add missing translation key', () => {
45
+ expect(mumuki.I18n.translate('greet', {name: 'Jane'})).toBe('Hi Jane');
46
+ });
47
+
48
+ it('keep non overriding translation key', () => {
49
+ expect(mumuki.I18n.translate('passed')).toBe('Everything is in order! Your solution passed all our tests!');
50
+ });
51
+ });
52
+
53
+ describe('with some prefix', () => {
54
+ fixture.set(`
55
+ <div class="mu-kindergarten" data-i18n-prefix="testing">
56
+ <button class="mu-kids-button">Click me<button>
57
+ <div class="mu-kids-overlay" style="display: none"></div>
58
+ </div>
59
+ `);
60
+
61
+ beforeEach(() => {
62
+ mumuki.locale = 'en';
63
+ mumuki.I18n.register({
64
+ en: {
65
+ testing_failed: 'Ops! Execution failed',
66
+ }
67
+ });
68
+ });
69
+
70
+ it('Using prefix with existing translation key', () => {
71
+ expect(mumuki.I18n.t('passed')).toBe('Everything is in order! Your solution passed all our tests!');
72
+ });
73
+
74
+ it('Use prefix with none existing translation key but default key exists', () => {
75
+ expect(mumuki.I18n.t('failed')).toBe('Ops! Execution failed');
76
+ });
77
+
78
+ it('No key found', () => {
79
+ expect(mumuki.I18n.t('foo')).toBe('Translation missing: en, `foo`');
80
+ });
81
+ });
82
+ });
@@ -0,0 +1,34 @@
1
+ describe('KidsButton', () => {
2
+ let button;
3
+
4
+ fixture.set(`
5
+ <div class="mu-kindergarten">
6
+ <button class="mu-kids-button">Click me<button>
7
+ <div class="mu-kids-overlay" style="display: none"></div>
8
+ </div>
9
+ `);
10
+
11
+ beforeEach(() => {
12
+ mumuki.kids = new mumuki.Kids();
13
+ button = new mumuki.submission.KidsSubmitButton($('.mu-kids-button'));
14
+ });
15
+
16
+ it('can create button', () => {
17
+ expect(button).not.toBe(null);
18
+ });
19
+
20
+ it('overlay is hidden by default', () => {
21
+ expect(mumuki.kids.$overlay.css('display')).toBe('none');
22
+ });
23
+
24
+ it('call showOverlay on wait', () => {
25
+ button.wait();
26
+ expect(mumuki.kids.$overlay.css('display')).toBe('block');
27
+ });
28
+
29
+ it('call hideOverlay on continue', () => {
30
+ button.wait();
31
+ button.continue();
32
+ expect(mumuki.kids.$overlay.css('display')).toBe('none');
33
+ });
34
+ });
@@ -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
+ });
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.2.0
4
+ version: 8.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Bulgarelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-07 00:00:00.000000000 Z
11
+ date: 2021-02-12 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.2.0
33
+ version: 8.6.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.2.0
40
+ version: 8.6.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mumukit-bridge
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -370,6 +370,7 @@ files:
370
370
  - app/assets/javascripts/mumuki_laboratory/application/exercise.js
371
371
  - app/assets/javascripts/mumuki_laboratory/application/free-form.js
372
372
  - app/assets/javascripts/mumuki_laboratory/application/gamification.js
373
+ - app/assets/javascripts/mumuki_laboratory/application/i18n.js
373
374
  - app/assets/javascripts/mumuki_laboratory/application/inputs.js
374
375
  - app/assets/javascripts/mumuki_laboratory/application/interval.js
375
376
  - app/assets/javascripts/mumuki_laboratory/application/kids.js
@@ -398,6 +399,7 @@ files:
398
399
  - app/assets/javascripts/mumuki_laboratory/application/user.js
399
400
  - app/assets/stylesheets/mumuki_laboratory/application.scss
400
401
  - app/assets/stylesheets/mumuki_laboratory/application/_alerts.scss
402
+ - app/assets/stylesheets/mumuki_laboratory/application/_codemirror-themes.scss
401
403
  - app/assets/stylesheets/mumuki_laboratory/application/_errors.scss
402
404
  - app/assets/stylesheets/mumuki_laboratory/application/_fonts.scss
403
405
  - app/assets/stylesheets/mumuki_laboratory/application/_invitations.scss
@@ -407,6 +409,7 @@ files:
407
409
  - app/assets/stylesheets/mumuki_laboratory/application/_modules.scss
408
410
  - app/assets/stylesheets/mumuki_laboratory/application/_tooltip.scss
409
411
  - app/assets/stylesheets/mumuki_laboratory/application/_vendor.scss
412
+ - app/assets/stylesheets/mumuki_laboratory/application/codemirror-themes/_mu-light.scss
410
413
  - app/assets/stylesheets/mumuki_laboratory/application/hovers.scss
411
414
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_avatar.scss
412
415
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss
@@ -462,6 +465,8 @@ files:
462
465
  - app/controllers/concerns/with_user_params.rb
463
466
  - app/controllers/discussions_controller.rb
464
467
  - app/controllers/discussions_messages_controller.rb
468
+ - app/controllers/exam_authorization_requests_controller.rb
469
+ - app/controllers/exam_registrations_controller.rb
465
470
  - app/controllers/exams_controller.rb
466
471
  - app/controllers/exercise_confirmations_controller.rb
467
472
  - app/controllers/exercise_query_controller.rb
@@ -534,6 +539,8 @@ files:
534
539
  - app/views/errors/internal_server_error.html.erb
535
540
  - app/views/errors/not_found.html.erb
536
541
  - app/views/errors/unauthorized.html.erb
542
+ - app/views/exam_authorization_requests/show.html.erb
543
+ - app/views/exam_registrations/show.html.erb
537
544
  - app/views/exams/show.html.erb
538
545
  - app/views/exercise_solutions/_assistant_rules_box.html.erb
539
546
  - app/views/exercise_solutions/_contextualization_results_body.html.erb
@@ -558,6 +565,8 @@ files:
558
565
  - app/views/layouts/_error.html.erb
559
566
  - app/views/layouts/_exercise_skipped.html.erb
560
567
  - app/views/layouts/_guide.html.erb
568
+ - app/views/layouts/_guide_container.html.erb
569
+ - app/views/layouts/_guide_title_icons.html.erb
561
570
  - app/views/layouts/_kids.html.erb
562
571
  - app/views/layouts/_kindergarten.html.erb
563
572
  - app/views/layouts/_main.html.erb
@@ -618,6 +627,11 @@ files:
618
627
  - app/views/layouts/modals/_new_message.html.erb
619
628
  - app/views/lessons/show.html.erb
620
629
  - app/views/messages/errors.html.erb
630
+ - app/views/notifications/_discussion.html.erb
631
+ - app/views/notifications/_dropdown.html.erb
632
+ - app/views/notifications/_exam_authorization_request.html.erb
633
+ - app/views/notifications/_exam_registration.html.erb
634
+ - app/views/notifications/_message.html.erb
621
635
  - app/views/user_mailer/1st_reminder.html.erb
622
636
  - app/views/user_mailer/1st_reminder.text.erb
623
637
  - app/views/user_mailer/2nd_reminder.html.erb
@@ -670,13 +684,6 @@ files:
670
684
  - lib/tasks/messages.rake
671
685
  - lib/tasks/users.rake
672
686
  - public/422.html
673
- - public/character/kibi/context.svg
674
- - public/character/kibi/failure.svg
675
- - public/character/kibi/jump.svg
676
- - public/character/kibi/success2_l.svg
677
- - public/character/kibi/success_l.svg
678
- - public/character/magnifying_glass/apparition.svg
679
- - public/character/magnifying_glass/loop.svg
680
687
  - public/compass_rose.svg
681
688
  - public/email-banner.png
682
689
  - public/favicon.ico
@@ -691,6 +698,8 @@ files:
691
698
  - spec/controllers/courses_api_controller_spec.rb
692
699
  - spec/controllers/discussions_controller_spec.rb
693
700
  - spec/controllers/discussions_messages_controller_spec.rb
701
+ - spec/controllers/exam_authorization_requests_controller_spec.rb
702
+ - spec/controllers/exam_registrations_controller_spec.rb
694
703
  - spec/controllers/exercise_solutions_controller_spec.rb
695
704
  - spec/controllers/guide_progress_controller_spec.rb
696
705
  - spec/controllers/invitations_controller_spec.rb
@@ -728,6 +737,14 @@ files:
728
737
  - spec/dummy/db/seeds.rb
729
738
  - spec/dummy/package.json
730
739
  - spec/dummy/public/character/animations.json
740
+ - spec/dummy/public/character/kibi/context.svg
741
+ - spec/dummy/public/character/kibi/failure.svg
742
+ - spec/dummy/public/character/kibi/jump.svg
743
+ - spec/dummy/public/character/kibi/passed_with_warnings.svg
744
+ - spec/dummy/public/character/kibi/success2_l.svg
745
+ - spec/dummy/public/character/kibi/success_l.svg
746
+ - spec/dummy/public/character/magnifying_glass/apparition.svg
747
+ - spec/dummy/public/character/magnifying_glass/loop.svg
731
748
  - spec/dummy/public/error/401.svg
732
749
  - spec/dummy/public/error/403.svg
733
750
  - spec/dummy/public/error/404.svg
@@ -738,7 +755,7 @@ files:
738
755
  - spec/dummy/public/error/timeout_3.svg
739
756
  - spec/dummy/public/medal/outline.svg
740
757
  - spec/evaluation_helper.rb
741
- - spec/features/chapter_spec.rb
758
+ - spec/features/chapters_flow_spec.rb
742
759
  - spec/features/complements_flow_spec.rb
743
760
  - spec/features/disable_user_flow_spec.rb
744
761
  - spec/features/disabled_organization_flow_spec.rb
@@ -758,6 +775,7 @@ files:
758
775
  - spec/features/menu_bar_spec.rb
759
776
  - spec/features/not_found_private_flow_spec.rb
760
777
  - spec/features/not_found_public_flow_spec.rb
778
+ - spec/features/notifications_flow_spec.rb
761
779
  - spec/features/profile_flow_spec.rb
762
780
  - spec/features/progressive_tips_spec.rb
763
781
  - spec/features/runner_assets_spec.rb
@@ -783,6 +801,8 @@ files:
783
801
  - spec/javascripts/exercise-spec.js
784
802
  - spec/javascripts/gamification-spec.js
785
803
  - spec/javascripts/global-spec.js
804
+ - spec/javascripts/i18n-spec.js
805
+ - spec/javascripts/kids-button-spec.js
786
806
  - spec/javascripts/results-renderers-spec.js
787
807
  - spec/javascripts/spec-helper.js
788
808
  - spec/javascripts/speech-bubble-renderer-spec.js
@@ -860,115 +880,128 @@ signing_key:
860
880
  specification_version: 4
861
881
  summary: Code assement web application for the Mumuki Platform.
862
882
  test_files:
883
+ - spec/controllers/invitations_controller_spec.rb
884
+ - spec/controllers/discussions_controller_spec.rb
885
+ - spec/controllers/api_clients_controller.rb
886
+ - spec/controllers/guide_progress_controller_spec.rb
887
+ - spec/controllers/exercise_solutions_controller_spec.rb
888
+ - spec/controllers/courses_api_controller_spec.rb
889
+ - spec/controllers/exam_registrations_controller_spec.rb
890
+ - spec/controllers/students_api_controller_spec.rb
891
+ - spec/controllers/messages_controller_spec.rb
892
+ - spec/controllers/exam_authorization_requests_controller_spec.rb
893
+ - spec/controllers/confirmations_controller_spec.rb
894
+ - spec/controllers/discussions_messages_controller_spec.rb
895
+ - spec/controllers/users_api_controller_spec.rb
896
+ - spec/controllers/chapters_controller_spec.rb
897
+ - spec/controllers/organizations_api_controller_spec.rb
898
+ - spec/controllers/users_controller_spec.rb
899
+ - spec/evaluation_helper.rb
900
+ - spec/capybara_helper.rb
901
+ - spec/login_helper.rb
902
+ - spec/mailers/previews/user_mailer_preview.rb
903
+ - spec/mailers/user_mailer_spec.rb
863
904
  - spec/spec_helper.rb
864
- - spec/teaspoon_env.rb
865
905
  - spec/dummy/package.json
866
- - spec/dummy/config.ru
867
- - spec/dummy/db/seeds.rb
868
- - spec/dummy/db/schema.rb
906
+ - spec/dummy/bin/bundle
907
+ - spec/dummy/bin/update
908
+ - spec/dummy/bin/setup
909
+ - spec/dummy/bin/rake
910
+ - spec/dummy/bin/rails
911
+ - spec/dummy/bin/yarn
912
+ - spec/dummy/public/character/kibi/jump.svg
913
+ - spec/dummy/public/character/kibi/context.svg
914
+ - spec/dummy/public/character/kibi/success_l.svg
915
+ - spec/dummy/public/character/kibi/failure.svg
916
+ - spec/dummy/public/character/kibi/success2_l.svg
917
+ - spec/dummy/public/character/kibi/passed_with_warnings.svg
918
+ - spec/dummy/public/character/magnifying_glass/apparition.svg
919
+ - spec/dummy/public/character/magnifying_glass/loop.svg
920
+ - spec/dummy/public/character/animations.json
869
921
  - spec/dummy/public/medal/outline.svg
922
+ - spec/dummy/public/error/403.svg
923
+ - spec/dummy/public/error/410.svg
924
+ - spec/dummy/public/error/401.svg
870
925
  - spec/dummy/public/error/404.svg
871
926
  - spec/dummy/public/error/500.svg
872
- - spec/dummy/public/error/timeout_2.svg
873
- - spec/dummy/public/error/401.svg
874
927
  - spec/dummy/public/error/timeout_1.svg
875
928
  - spec/dummy/public/error/timeout_3.svg
876
- - spec/dummy/public/error/403.svg
877
- - spec/dummy/public/error/410.svg
878
- - spec/dummy/public/character/animations.json
879
- - spec/dummy/config/environment.rb
880
- - spec/dummy/config/secrets.yml
881
- - spec/dummy/config/puma.rb
929
+ - spec/dummy/public/error/timeout_2.svg
930
+ - spec/dummy/config.ru
931
+ - spec/dummy/db/schema.rb
932
+ - spec/dummy/db/seeds.rb
882
933
  - spec/dummy/config/application.rb
883
- - spec/dummy/config/initializers/cookies_serializer.rb
934
+ - spec/dummy/config/boot.rb
884
935
  - spec/dummy/config/initializers/filter_parameter_logging.rb
885
- - spec/dummy/config/initializers/assets.rb
936
+ - spec/dummy/config/initializers/cookies_serializer.rb
886
937
  - spec/dummy/config/initializers/wrap_parameters.rb
887
- - spec/dummy/config/cable.yml
888
- - spec/dummy/config/routes.rb
938
+ - spec/dummy/config/initializers/assets.rb
939
+ - spec/dummy/config/puma.rb
940
+ - spec/dummy/config/environments/development.rb
941
+ - spec/dummy/config/environments/test.rb
889
942
  - spec/dummy/config/database.yml
943
+ - spec/dummy/config/locales/en.yml
944
+ - spec/dummy/config/secrets.yml
945
+ - spec/dummy/config/environment.rb
890
946
  - spec/dummy/config/spring.rb
891
- - spec/dummy/config/environments/test.rb
892
- - spec/dummy/config/environments/development.rb
893
- - spec/dummy/config/boot.rb
947
+ - spec/dummy/config/cable.yml
894
948
  - spec/dummy/config/rabbit.yml
895
- - spec/dummy/config/locales/en.yml
949
+ - spec/dummy/config/routes.rb
896
950
  - spec/dummy/Rakefile
897
- - spec/dummy/bin/rake
898
- - spec/dummy/bin/setup
899
- - spec/dummy/bin/bundle
900
- - spec/dummy/bin/rails
901
- - spec/dummy/bin/yarn
902
- - spec/dummy/bin/update
903
- - spec/mailers/user_mailer_spec.rb
904
- - spec/mailers/previews/user_mailer_preview.rb
905
951
  - spec/api_helper.rb
906
- - spec/features/runner_assets_spec.rb
952
+ - spec/features/profile_flow_spec.rb
953
+ - spec/features/not_found_public_flow_spec.rb
954
+ - spec/features/home_private_flow_spec.rb
955
+ - spec/features/login_flow_spec.rb
907
956
  - spec/features/links_flow_spec.rb
908
- - spec/features/not_found_private_flow_spec.rb
909
- - spec/features/progressive_tips_spec.rb
910
- - spec/features/disabled_organization_flow_spec.rb
911
957
  - spec/features/complements_flow_spec.rb
912
- - spec/features/profile_flow_spec.rb
958
+ - spec/features/notifications_flow_spec.rb
959
+ - spec/features/topic_flow_spec.rb
913
960
  - spec/features/guide_reset_spec.rb
914
961
  - spec/features/menu_bar_spec.rb
915
- - spec/features/guides_flow_spec.rb
916
- - spec/features/exams_flow_spec.rb
962
+ - spec/features/disabled_organization_flow_spec.rb
917
963
  - spec/features/dynamic_exam_spec.rb
918
- - spec/features/discussion_flow_spec.rb
919
- - spec/features/login_flow_spec.rb
920
- - spec/features/disable_user_flow_spec.rb
964
+ - spec/features/standard_flow_spec.rb
921
965
  - spec/features/home_public_flow_spec.rb
922
- - spec/features/home_private_flow_spec.rb
966
+ - spec/features/chapters_flow_spec.rb
967
+ - spec/features/not_found_private_flow_spec.rb
968
+ - spec/features/immersive_redirection_spec.rb
923
969
  - spec/features/terms_flow_spec.rb
970
+ - spec/features/progressive_tips_spec.rb
924
971
  - spec/features/lessons_flow_spec.rb
925
- - spec/features/topic_flow_spec.rb
926
- - spec/features/standard_flow_spec.rb
927
- - spec/features/immersive_redirection_spec.rb
928
- - spec/features/not_found_public_flow_spec.rb
929
- - spec/features/exercise_flow_spec.rb
972
+ - spec/features/disable_user_flow_spec.rb
930
973
  - spec/features/invitations_flow_spec.rb
931
- - spec/features/chapter_spec.rb
932
- - spec/capybara_helper.rb
933
- - spec/evaluation_helper.rb
934
- - spec/javascripts/submissions-store-spec.js
935
- - spec/javascripts/exercise-spec.js
936
- - spec/javascripts/spec-helper.js
937
- - spec/javascripts/results-renderers-spec.js
938
- - spec/javascripts/timer-spec.js
939
- - spec/javascripts/elipsis-spec.js
940
- - spec/javascripts/gamification-spec.js
974
+ - spec/features/guides_flow_spec.rb
975
+ - spec/features/runner_assets_spec.rb
976
+ - spec/features/discussion_flow_spec.rb
977
+ - spec/features/exercise_flow_spec.rb
978
+ - spec/features/exams_flow_spec.rb
979
+ - spec/javascripts/i18n-spec.js
941
980
  - spec/javascripts/bridge-spec.js
942
981
  - spec/javascripts/timeout-spec.js
982
+ - spec/javascripts/results-renderers-spec.js
983
+ - spec/javascripts/kids-button-spec.js
984
+ - spec/javascripts/timer-spec.js
985
+ - spec/javascripts/sync-mode-spec.js
943
986
  - spec/javascripts/events-spec.js
944
987
  - spec/javascripts/editors-spec.js
945
- - spec/javascripts/sync-mode-spec.js
946
- - spec/javascripts/speech-bubble-renderer-spec.js
947
- - spec/javascripts/global-spec.js
988
+ - spec/javascripts/exercise-spec.js
989
+ - spec/javascripts/elipsis-spec.js
990
+ - spec/javascripts/spec-helper.js
991
+ - spec/javascripts/submissions-store-spec.js
992
+ - spec/javascripts/gamification-spec.js
948
993
  - spec/javascripts/csrf-token-spec.js
949
- - spec/controllers/users_controller_spec.rb
950
- - spec/controllers/messages_controller_spec.rb
951
- - spec/controllers/students_api_controller_spec.rb
952
- - spec/controllers/chapters_controller_spec.rb
953
- - spec/controllers/confirmations_controller_spec.rb
954
- - spec/controllers/courses_api_controller_spec.rb
955
- - spec/controllers/api_clients_controller.rb
956
- - spec/controllers/discussions_controller_spec.rb
957
- - spec/controllers/invitations_controller_spec.rb
958
- - spec/controllers/users_api_controller_spec.rb
959
- - spec/controllers/discussions_messages_controller_spec.rb
960
- - spec/controllers/exercise_solutions_controller_spec.rb
961
- - spec/controllers/organizations_api_controller_spec.rb
962
- - spec/controllers/guide_progress_controller_spec.rb
963
- - spec/login_helper.rb
964
- - spec/helpers/page_title_helper_spec.rb
965
- - spec/helpers/icons_helper_spec.rb
966
- - spec/helpers/breadcrumbs_helper_spec.rb
967
- - spec/helpers/test_results_rendering_spec.rb
968
- - spec/helpers/application_helper_spec.rb
969
- - spec/helpers/avatar_helper_spec.rb
970
- - spec/helpers/authors_helper_spec.rb
971
- - spec/helpers/with_choices_spec.rb
994
+ - spec/javascripts/global-spec.js
995
+ - spec/javascripts/speech-bubble-renderer-spec.js
996
+ - spec/teaspoon_env.rb
972
997
  - spec/helpers/exercise_input_helper_spec.rb
998
+ - spec/helpers/application_helper_spec.rb
999
+ - spec/helpers/page_title_helper_spec.rb
973
1000
  - spec/helpers/with_navigation_spec.rb
1001
+ - spec/helpers/authors_helper_spec.rb
974
1002
  - spec/helpers/email_helper_spec.rb
1003
+ - spec/helpers/with_choices_spec.rb
1004
+ - spec/helpers/avatar_helper_spec.rb
1005
+ - spec/helpers/icons_helper_spec.rb
1006
+ - spec/helpers/test_results_rendering_spec.rb
1007
+ - spec/helpers/breadcrumbs_helper_spec.rb