mumuki-laboratory 9.0.6 → 9.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/mumuki_laboratory/application/discussions.js +10 -10
  3. data/app/assets/javascripts/mumuki_laboratory/application/gamification.js +3 -3
  4. data/app/assets/javascripts/mumuki_laboratory/application/kids.js +11 -7
  5. data/app/assets/javascripts/mumuki_laboratory/application/kindergarten.js +3 -3
  6. data/app/assets/javascripts/mumuki_laboratory/application/messages.js +3 -3
  7. data/app/assets/javascripts/mumuki_laboratory/application/mu-modal-carrousel.js +4 -4
  8. data/app/assets/javascripts/mumuki_laboratory/application/multiple-files.js +12 -6
  9. data/app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js +1 -1
  10. data/app/assets/javascripts/mumuki_laboratory/application/primary.js +4 -4
  11. data/app/assets/javascripts/mumuki_laboratory/application/profile.js +0 -6
  12. data/app/assets/javascripts/mumuki_laboratory/application/progress.js +1 -1
  13. data/app/assets/javascripts/mumuki_laboratory/application/speech-bubble-renderer.js +1 -1
  14. data/app/assets/javascripts/mumuki_laboratory/application/submission.js +4 -3
  15. data/app/assets/javascripts/mumuki_laboratory/application/toast.js +3 -0
  16. data/app/assets/javascripts/mumuki_laboratory/application/tooltip.js +1 -1
  17. data/app/assets/javascripts/mumuki_laboratory/application/upload.js +2 -2
  18. data/app/assets/stylesheets/mumuki_laboratory/application.scss +0 -1
  19. data/app/assets/stylesheets/mumuki_laboratory/application/_errors.scss +1 -1
  20. data/app/assets/stylesheets/mumuki_laboratory/application/_layout.scss +1 -27
  21. data/app/assets/stylesheets/mumuki_laboratory/application/_modules.scss +0 -2
  22. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_activity.scss +7 -5
  23. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_avatar.scss +5 -0
  24. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_breadcrumb.scss +6 -30
  25. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_datepicker.scss +0 -4
  26. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +38 -60
  27. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_editor.scss +16 -18
  28. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_assignment.scss +2 -11
  29. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_results.scss +1 -7
  30. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_faqs.scss +3 -3
  31. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_flash.scss +7 -46
  32. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss +19 -5
  33. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss +18 -23
  34. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kindergarten.scss +1 -9
  35. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_overlap.scss +1 -1
  36. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_bar.scss +5 -5
  37. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_timer.scss +1 -3
  38. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_menu.scss +13 -6
  39. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss +0 -2
  40. data/app/controllers/application_controller.rb +4 -2
  41. data/app/controllers/discussions_messages_controller.rb +3 -1
  42. data/app/controllers/exam_authorization_requests_controller.rb +1 -5
  43. data/app/controllers/users_controller.rb +4 -0
  44. data/app/helpers/application_helper.rb +5 -5
  45. data/app/helpers/assignment_result_helper.rb +3 -2
  46. data/app/helpers/assistance_box_helper.rb +1 -1
  47. data/app/helpers/concerns/with_student_path_navigation.rb +8 -3
  48. data/app/helpers/concerns/with_student_path_navigation/continue_navigation.rb +1 -1
  49. data/app/helpers/concerns/with_student_path_navigation/finish_navigation.rb +1 -1
  50. data/app/helpers/concerns/with_student_path_navigation/next_parent_navigation.rb +7 -0
  51. data/app/helpers/concerns/with_student_path_navigation/revisit_navigation.rb +1 -1
  52. data/app/helpers/discussions_helper.rb +61 -24
  53. data/app/helpers/editor_tabs_helper.rb +10 -6
  54. data/app/helpers/email_helper.rb +2 -2
  55. data/app/helpers/exercise_input_helper.rb +2 -3
  56. data/app/helpers/links_helper.rb +12 -9
  57. data/app/helpers/menu_bar_helper.rb +1 -1
  58. data/app/helpers/messages_helper.rb +1 -1
  59. data/app/helpers/overlapped_buttons_helper.rb +22 -12
  60. data/app/helpers/profile_helper.rb +3 -3
  61. data/app/helpers/toast_helper.rb +27 -0
  62. data/app/helpers/user_activity_helper.rb +1 -1
  63. data/app/helpers/user_menu_helper.rb +4 -0
  64. data/app/views/book/show.html.erb +2 -2
  65. data/app/views/certificates/verify.html.erb +1 -1
  66. data/app/views/chapters/show.html.erb +2 -2
  67. data/app/views/discussions/_message.html.erb +31 -6
  68. data/app/views/discussions/_new_message.html.erb +4 -4
  69. data/app/views/discussions/index.html.erb +8 -10
  70. data/app/views/discussions/new.html.erb +1 -1
  71. data/app/views/discussions/show.html.erb +20 -12
  72. data/app/views/exam_authorization_requests/_approved.html.erb +1 -0
  73. data/app/views/exam_authorization_requests/_pending.html.erb +4 -0
  74. data/app/views/exam_authorization_requests/_rejected.html.erb +1 -0
  75. data/app/views/exam_registrations/show.html.erb +11 -12
  76. data/app/views/exercise_solutions/_assistant_rules_box.html.erb +1 -1
  77. data/app/views/exercise_solutions/_contextualization_results_body.html.erb +1 -1
  78. data/app/views/exercise_solutions/_contextualization_results_container.html.erb +1 -1
  79. data/app/views/exercise_solutions/_kids_results_button.html.erb +2 -2
  80. data/app/views/exercise_solutions/_results.html.erb +1 -1
  81. data/app/views/exercises/_exercise_assignment.html.erb +2 -2
  82. data/app/views/exercises/_exercise_skipped.html.erb +1 -1
  83. data/app/views/exercises/_read_only.html.erb +108 -105
  84. data/app/views/exercises/show.html.erb +7 -7
  85. data/app/views/guides/_guide.html.erb +1 -1
  86. data/app/views/guides/_guide_container.html.erb +4 -4
  87. data/app/views/invitations/_invitation_form.html.erb +5 -4
  88. data/app/views/layouts/_authoring.html.erb +1 -1
  89. data/app/views/layouts/_discussions.html.erb +7 -7
  90. data/app/views/layouts/_kids.html.erb +7 -7
  91. data/app/views/layouts/_kindergarten.html.erb +10 -6
  92. data/app/views/layouts/_main.html.erb +6 -10
  93. data/app/views/layouts/_organizations_listing.html.erb +2 -2
  94. data/app/views/layouts/_progress_bar.html.erb +2 -0
  95. data/app/views/layouts/_submission_result_error.html.erb +1 -1
  96. data/app/views/layouts/_test_results.html.erb +2 -2
  97. data/app/views/layouts/_timer.html.erb +1 -1
  98. data/app/views/layouts/_user_menu.html.erb +4 -3
  99. data/app/views/layouts/application.html.erb +39 -42
  100. data/app/views/layouts/exercise_inputs/editors/_code.html.erb +4 -4
  101. data/app/views/layouts/exercise_inputs/editors/_free_form.html.erb +1 -1
  102. data/app/views/layouts/exercise_inputs/editors/_multiple_choice.html.erb +7 -9
  103. data/app/views/layouts/exercise_inputs/editors/_multiple_files.html.erb +10 -10
  104. data/app/views/layouts/exercise_inputs/editors/_single_choice.html.erb +6 -8
  105. data/app/views/layouts/exercise_inputs/editors/_text.html.erb +2 -3
  106. data/app/views/layouts/exercise_inputs/editors/_upload.html.erb +5 -5
  107. data/app/views/layouts/exercise_inputs/forms/_form.html.erb +1 -1
  108. data/app/views/layouts/exercise_inputs/forms/_interactive_form.html.erb +2 -2
  109. data/app/views/layouts/exercise_inputs/forms/_kids_form.html.erb +1 -1
  110. data/app/views/layouts/exercise_inputs/forms/_playground_form.html.erb +2 -2
  111. data/app/views/layouts/exercise_inputs/forms/_problem_form.html.erb +13 -9
  112. data/app/views/layouts/exercise_inputs/layouts/_input_primary.html.erb +2 -2
  113. data/app/views/layouts/exercise_inputs/layouts/_input_right.html.erb +2 -2
  114. data/app/views/layouts/exercise_inputs/read_only_editors/_code.html.erb +1 -1
  115. data/app/views/layouts/exercise_inputs/read_only_editors/_free_form.html.erb +1 -1
  116. data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_choice.html.erb +4 -4
  117. data/app/views/layouts/exercise_inputs/read_only_editors/_multiple_files.html.erb +2 -2
  118. data/app/views/layouts/exercise_inputs/read_only_editors/_single_choice.html.erb +4 -4
  119. data/app/views/layouts/exercise_inputs/read_only_editors/_text.erb +1 -1
  120. data/app/views/layouts/modals/_avatar_picker.html.erb +2 -5
  121. data/app/views/layouts/modals/_guide_corollary.html.erb +4 -8
  122. data/app/views/layouts/modals/_kids_context.html.erb +7 -5
  123. data/app/views/layouts/modals/_kids_results.html.erb +2 -2
  124. data/app/views/layouts/modals/_kids_results_aborted.html.erb +2 -2
  125. data/app/views/layouts/modals/_kindergarten_context.html.erb +3 -3
  126. data/app/views/layouts/modals/_kindergarten_results.html.erb +3 -3
  127. data/app/views/layouts/modals/_kindergarten_results_aborted.html.erb +2 -2
  128. data/app/views/layouts/modals/_level_up.html.erb +2 -5
  129. data/app/views/layouts/modals/_new_message.html.erb +5 -5
  130. data/app/views/notifications/_dropdown.html.erb +3 -3
  131. data/app/views/notifications/_exam_authorization_request.html.erb +1 -1
  132. data/app/views/users/_activity_indicator.html.erb +14 -14
  133. data/app/views/users/_edit_user_form.html.erb +6 -6
  134. data/app/views/users/_profile_fields.html.erb +6 -6
  135. data/app/views/users/_user_form.html.erb +2 -2
  136. data/app/views/users/activity.html.erb +29 -29
  137. data/app/views/users/certificates.html.erb +26 -24
  138. data/app/views/users/discussions.html.erb +23 -21
  139. data/app/views/users/exam_authorizations.html.erb +42 -0
  140. data/app/views/users/messages.html.erb +22 -20
  141. data/app/views/users/show.html.erb +5 -3
  142. data/app/views/users/terms.html.erb +4 -2
  143. data/config/routes.rb +2 -1
  144. data/lib/mumuki/laboratory.rb +1 -1
  145. data/lib/mumuki/laboratory/locales/en.yml +17 -2
  146. data/lib/mumuki/laboratory/locales/es-CL.yml +17 -2
  147. data/lib/mumuki/laboratory/locales/es.yml +17 -2
  148. data/lib/mumuki/laboratory/locales/pt.yml +17 -3
  149. data/lib/mumuki/laboratory/version.rb +1 -1
  150. data/spec/capybara_helper.rb +1 -0
  151. data/spec/controllers/discussions_messages_controller_spec.rb +64 -2
  152. data/spec/controllers/exam_authorization_requests_controller_spec.rb +1 -18
  153. data/spec/controllers/users_controller_spec.rb +1 -0
  154. data/spec/dummy/db/schema.rb +4 -0
  155. data/spec/features/discussion_flow_spec.rb +20 -2
  156. data/spec/features/exercise_flow_spec.rb +1 -1
  157. data/spec/features/guide_reset_spec.rb +1 -1
  158. data/spec/features/notifications_flow_spec.rb +2 -3
  159. data/spec/features/terms_flow_spec.rb +1 -2
  160. data/spec/helpers/breadcrumbs_helper_spec.rb +2 -2
  161. data/spec/helpers/with_navigation_spec.rb +51 -13
  162. data/spec/javascripts/editors-spec.js +3 -3
  163. data/spec/javascripts/kids-button-spec.js +2 -2
  164. data/spec/javascripts/upload-spec.js +8 -8
  165. metadata +125 -122
  166. data/app/assets/stylesheets/mumuki_laboratory/application/hovers.scss +0 -12
  167. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_checkboxes.scss +0 -34
  168. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_guide_corollary.scss +0 -9
  169. data/app/views/exam_authorization_requests/show.html.erb +0 -17
@@ -190,7 +190,7 @@ feature 'Exercise Flow', organization_workspace: :test do
190
190
  expect(page).to have_text('need a hint?')
191
191
  expect(page).to have_selector('.upload')
192
192
  expect(problem_5.language.extension).to eq('gbs')
193
- expect(page.find("//div[@class = 'form-group']/input")['accept']).to eq(".gbs")
193
+ expect(page.find("//input[@id = 'mu-upload-input']")['accept']).to eq(".gbs")
194
194
 
195
195
  expect(page.find("#mu-exercise-id")['value']).to eq(problem_5.id.to_s)
196
196
  expect(page.find("#mu-exercise-layout")['value']).to eq('input_right')
@@ -18,7 +18,7 @@ feature 'Guide Reset Flow', organization_workspace: :test do
18
18
 
19
19
  before { reindex_current_organization! }
20
20
 
21
- let(:restart_xpath) { "//i[@title='#{I18n.t(:restart)}']" }
21
+ let(:restart_xpath) { "//a[@title='#{I18n.t(:restart)}']" }
22
22
 
23
23
  context 'no logged in user' do
24
24
  scenario 'visit guide' do
@@ -37,10 +37,9 @@ feature 'Notifications Flow', organization_workspace: :test do
37
37
  expect(page).to have_text 'Choose date and time to attend to the exam'
38
38
  end
39
39
 
40
- scenario 'removes notification after target is processed' do
41
- # Notification for exam authorization request is considered read after user click
40
+ scenario 'does not remove exam authorization notification after click it ' do
42
41
  find_notification_number(1).click
43
- expect(notifications_bell).to have_text('1')
42
+ expect(notifications_bell).to have_text('2')
44
43
  end
45
44
  end
46
45
  end
@@ -92,8 +92,7 @@ feature 'Terms Flow', organization_workspace: :test do
92
92
  end
93
93
  end
94
94
 
95
- context 'with unaccepted role terms' do
96
-
95
+ context 'with unaccepted role terms', :toast_interferes_with_view do
97
96
  context 'visit forum' do
98
97
  let(:terms_path) { '/discussions/terms' }
99
98
  before { test_organization.update! forum_enabled: true }
@@ -46,7 +46,7 @@ describe BreadcrumbsHelper, organization_workspace: :test do
46
46
  end
47
47
 
48
48
  context 'in chapter' do
49
- let!(:chapter) { create(:chapter, name: 'my chapter', lessons: [lesson]) }
49
+ let!(:chapter) { create(:chapter, name: 'my chapter', lessons: [lesson], number: 1) }
50
50
  let(:lesson) { create(:lesson, name: 'my lesson', exercises: [exercise]) }
51
51
  let(:exercise) { create(:exercise, name: 'my exercise') }
52
52
 
@@ -64,7 +64,7 @@ describe BreadcrumbsHelper, organization_workspace: :test do
64
64
  it 'mumuki, organization, chapter and lesson have links but exercise does not' do
65
65
  expect(breadcrumb).to include home_breadcrumb_with_link
66
66
  expect(breadcrumb).to include organization_breadcrumb_with_link
67
- expect(breadcrumb).to include "<a href=\"/chapters/#{chapter.id}-my-chapter\">my chapter</a>"
67
+ expect(breadcrumb).to include "<a href=\"/chapters/#{chapter.id}-my-chapter\">1. my chapter</a>"
68
68
  expect(breadcrumb).to include "<a href=\"/lessons/#{lesson.id}-my-chapter-my-lesson\">1. my lesson</a>"
69
69
  expect(breadcrumb).to include "<li class='mu-breadcrumb-list-item last'>1. my exercise</li>"
70
70
  end
@@ -14,9 +14,9 @@ describe WithStudentPathNavigation, organization_workspace: :test do
14
14
  let!(:exercise_3) { create(:exercise, id: 13, name: 'exercise 3', guide: guide) }
15
15
 
16
16
  context 'when user did not submit any solution' do
17
- it { expect(next_button(exercise_1)).to eq "<a class=\"btn btn-success btn-block\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
18
- it { expect(next_button(exercise_2)).to eq "<a class=\"btn btn-success btn-block\" role=\"button\" href=\"/exercises/#{exercise_3.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 3</span><i class=\"fas fa-chevron-right\"></i></a>" }
19
- it { expect(next_button(exercise_3)).to eq "<a class=\"btn btn-warning btn-block\" role=\"button\" href=\"/exercises/#{exercise_1.friendly_name}\"><span class=\"fa5-text-r\">Next pending: exercise 1</span><i class=\"fas fa-chevron-right\"></i></a>" }
17
+ it { expect(next_button(exercise_1)).to eq "<a class=\"btn btn-complementary w-100\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
18
+ it { expect(next_button(exercise_2)).to eq "<a class=\"btn btn-complementary w-100\" role=\"button\" href=\"/exercises/#{exercise_3.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 3</span><i class=\"fas fa-chevron-right\"></i></a>" }
19
+ it { expect(next_button(exercise_3)).to eq "<a class=\"btn btn-warning w-100\" role=\"button\" href=\"/exercises/#{exercise_1.friendly_name}\"><span class=\"fa5-text-r\">Next pending: exercise 1</span><i class=\"fas fa-chevron-right\"></i></a>" }
20
20
  end
21
21
 
22
22
  context 'when on last unresolved exercise' do
@@ -25,9 +25,9 @@ describe WithStudentPathNavigation, organization_workspace: :test do
25
25
  exercise_3.submit_solution!(current_user).passed!
26
26
  end
27
27
 
28
- it { expect(next_button(exercise_1)).to eq "<a class=\"btn btn-success btn-block\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
28
+ it { expect(next_button(exercise_1)).to eq "<a class=\"btn btn-complementary w-100\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
29
29
  it { expect(next_button(exercise_2)).to be nil }
30
- it { expect(next_button(exercise_3)).to eq "<a class=\"btn btn-warning btn-block\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next pending: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
30
+ it { expect(next_button(exercise_3)).to eq "<a class=\"btn btn-warning w-100\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next pending: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
31
31
  end
32
32
 
33
33
  context 'when user did submit a solution' do
@@ -35,9 +35,9 @@ describe WithStudentPathNavigation, organization_workspace: :test do
35
35
  exercise_1.submit_solution!(current_user).passed!
36
36
  end
37
37
 
38
- it { expect(next_button(exercise_1)).to eq "<a class=\"btn btn-success btn-block\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
39
- it { expect(next_button(exercise_2)).to eq "<a class=\"btn btn-success btn-block\" role=\"button\" href=\"/exercises/#{exercise_3.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 3</span><i class=\"fas fa-chevron-right\"></i></a>" }
40
- it { expect(next_button(exercise_3)).to eq "<a class=\"btn btn-warning btn-block\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next pending: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
38
+ it { expect(next_button(exercise_1)).to eq "<a class=\"btn btn-complementary w-100\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
39
+ it { expect(next_button(exercise_2)).to eq "<a class=\"btn btn-complementary w-100\" role=\"button\" href=\"/exercises/#{exercise_3.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 3</span><i class=\"fas fa-chevron-right\"></i></a>" }
40
+ it { expect(next_button(exercise_3)).to eq "<a class=\"btn btn-warning w-100\" role=\"button\" href=\"/exercises/#{exercise_2.friendly_name}\"><span class=\"fa5-text-r\">Next pending: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
41
41
  end
42
42
  end
43
43
 
@@ -46,8 +46,8 @@ describe WithStudentPathNavigation, organization_workspace: :test do
46
46
  let!(:exercise) { create(:exercise, id: 12, name: 'exercise 2', guide: guide) }
47
47
 
48
48
  context 'when user did not submit any exercise' do
49
- it { expect(next_button(reading)).to eq "<a class=\"btn-confirmation btn btn-success btn-block\" data-confirmation-url=\"/exercises/#{reading.friendly_name}/confirmations\" role=\"button\" href=\"/exercises/#{exercise.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
50
- it { expect(next_button(exercise)).to eq "<a class=\"btn btn-warning btn-block\" role=\"button\" href=\"/exercises/#{reading.friendly_name}\"><span class=\"fa5-text-r\">Next pending: exercise 1</span><i class=\"fas fa-chevron-right\"></i></a>" }
49
+ it { expect(next_button(reading)).to eq "<a class=\"btn-confirmation btn btn-complementary w-100\" data-confirmation-url=\"/exercises/#{reading.friendly_name}/confirmations\" role=\"button\" href=\"/exercises/#{exercise.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
50
+ it { expect(next_button(exercise)).to eq "<a class=\"btn btn-warning w-100\" role=\"button\" href=\"/exercises/#{reading.friendly_name}\"><span class=\"fa5-text-r\">Next pending: exercise 1</span><i class=\"fas fa-chevron-right\"></i></a>" }
51
51
  end
52
52
 
53
53
  context 'when user finished just reading' do
@@ -55,7 +55,7 @@ describe WithStudentPathNavigation, organization_workspace: :test do
55
55
  reading.submit_confirmation!(current_user)
56
56
  end
57
57
 
58
- it { expect(next_button(reading)).to eq "<a class=\"btn-confirmation btn btn-success btn-block\" data-confirmation-url=\"/exercises/#{reading.friendly_name}/confirmations\" role=\"button\" href=\"/exercises/#{exercise.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
58
+ it { expect(next_button(reading)).to eq "<a class=\"btn-confirmation btn btn-complementary w-100\" data-confirmation-url=\"/exercises/#{reading.friendly_name}/confirmations\" role=\"button\" href=\"/exercises/#{exercise.friendly_name}\"><span class=\"fa5-text-r\">Next: exercise 2</span><i class=\"fas fa-chevron-right\"></i></a>" }
59
59
  it { expect(next_button(exercise)).to eq nil }
60
60
  end
61
61
  end
@@ -83,15 +83,53 @@ describe WithStudentPathNavigation, organization_workspace: :test do
83
83
  let(:lessons) { [lesson_1, lesson_2, lesson_3] }
84
84
 
85
85
  context 'one suggestion' do
86
- it { expect(next_button(lesson_2)).to include "<a class=\"btn btn-success btn-block\" role=\"button\" href=\"/lessons/#{lesson_3.friendly_name}\"><span class=\"fa5-text-r\">Next: #{lesson_3.name}</span><i class=\"fas fa-chevron-right\"></i></a>" }
86
+ it { expect(next_button(lesson_2)).to include "<a class=\"btn btn-complementary w-100\" role=\"button\" href=\"/lessons/#{lesson_3.friendly_name}\"><span class=\"fa5-text-r\">Next: #{lesson_3.name}</span><i class=\"fas fa-chevron-right\"></i></a>" }
87
87
  it { expect(next_button(lesson_1)).to be_html_safe }
88
88
  end
89
89
 
90
90
  context 'many suggestions' do
91
- it { expect(next_button(lesson_1)).to include "<a class=\"btn btn-success btn-block\" role=\"button\" href=\"/lessons/#{lesson_2.friendly_name}\"><span class=\"fa5-text-r\">Next: #{lesson_2.name}</span><i class=\"fas fa-chevron-right\"></i></a>" }
91
+ it { expect(next_button(lesson_1)).to include "<a class=\"btn btn-complementary w-100\" role=\"button\" href=\"/lessons/#{lesson_2.friendly_name}\"><span class=\"fa5-text-r\">Next: #{lesson_2.name}</span><i class=\"fas fa-chevron-right\"></i></a>" }
92
92
  it { expect(next_button(lesson_1)).to be_html_safe }
93
93
  end
94
94
  end
95
95
  end
96
+
97
+ context "when there's a next chapter" do
98
+ let(:organization) { create :organization, book: book }
99
+
100
+ let(:book) { create(:book, chapters: [
101
+ chapter_1,
102
+ chapter_2
103
+ ]) }
104
+
105
+ let(:chapter_1) { create(:chapter, lessons: [lesson_1]) }
106
+ let(:chapter_2) { create(:chapter, lessons: [create(:lesson, exercises: [ create(:exercise) ])]) }
107
+
108
+ let(:lesson_1) { create(:lesson, exercises: [ exercise_1 ]) }
109
+ let(:exercise_1) { create(:exercise) }
110
+
111
+ before do
112
+ organization.switch!
113
+ reindex_current_organization!
114
+ exercise_1.submit_solution!(current_user).passed!
115
+ end
116
+
117
+ it { expect(next_button(lesson_1)).to include "<a class=\"btn btn-complementary w-100\" role=\"button\" href=\"/chapters/#{chapter_2.friendly_name}\"><span class=\"fa5-text-r\">Next: #{chapter_2.name}</span><i class=\"fas fa-chevron-right\"></i></a>" }
118
+ end
119
+
120
+ context "when finishing an exam" do
121
+ let!(:organization) { create :organization, exams: [exam] }
122
+
123
+ let(:exam) { create(:exam, exercises: [ exercise ]) }
124
+ let(:exercise) { create(:exercise) }
125
+
126
+ before do
127
+ organization.switch!
128
+ exercise.submit_solution!(current_user).passed!
129
+ end
130
+
131
+ it { expect { next_button(exercise) }.to_not raise_error }
132
+ it { expect(next_button(exercise)).to be_nil }
133
+ end
96
134
  end
97
135
  end
@@ -22,7 +22,7 @@ describe('editors', () => {
22
22
  it('reads the custom sources if present, ignoring the form', () => {
23
23
  $('body').html(`
24
24
  <form role="form" class="new_solution">
25
- <div class="field form-group editor-code">
25
+ <div class="editor-code">
26
26
  <textarea class="form-control editor" name="solution[content]" id="solution_content">the standard solution</textarea>
27
27
  </div>
28
28
  </form>`);
@@ -39,7 +39,7 @@ describe('editors', () => {
39
39
  it('reads the form if no sources', () => {
40
40
  $('body').html(`
41
41
  <form role="form" class="new_solution">
42
- <div class="field form-group editor-code">
42
+ <div class="editor-code">
43
43
  <textarea class="form-control editor" name="solution[content]" id="solution_content">the solution</textarea>
44
44
  </div>
45
45
  </form>`);
@@ -49,7 +49,7 @@ describe('editors', () => {
49
49
  it('reads the form if no sources and exercise is multifile', () => {
50
50
  $('body').html(`
51
51
  <form role="form" class="new_solution">
52
- <div class="field form-group editor-code">
52
+ <div class="editor-code">
53
53
  <textarea
54
54
  class="form-control editor"
55
55
  data-editor-language="html"
@@ -4,7 +4,7 @@ describe('KidsButton', () => {
4
4
  fixture.set(`
5
5
  <div class="mu-kindergarten">
6
6
  <button class="mu-kids-button">Click me<button>
7
- <div class="mu-kids-overlay" style="display: none"></div>
7
+ <div class="mu-kids-overlay d-none"></div>
8
8
  </div>
9
9
  `);
10
10
 
@@ -18,7 +18,7 @@ describe('KidsButton', () => {
18
18
  });
19
19
 
20
20
  it('overlay is hidden by default', () => {
21
- expect(mumuki.kids.$overlay.css('display')).toBe('none');
21
+ expect(mumuki.kids.$overlay.hasClass('d-none'));
22
22
  });
23
23
 
24
24
  it('call showOverlay on wait', () => {
@@ -2,11 +2,11 @@ describe('upload', () => {
2
2
  const fileSizeLimit = 20;
3
3
 
4
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>
5
+ <textarea id="solution_content" type="text" name="solution[content]" class="d-none"></textarea>
6
+ <input id="mu-upload-input" type="file" class="upload submission-control d-none" mu-upload-file-limit=${fileSizeLimit} accept=".txt" />
7
+ <label id="mu-upload-label" for="mu-upload-input" class="btn btn-complementary"></label>
8
+ <button class="btn btn-complementary w-100 btn-submit disabled"></button>
9
+ <div id="mu-upload-file-limit-exceeded" class="d-none"></div>
10
10
  `);
11
11
 
12
12
  beforeEach(() => {
@@ -38,7 +38,7 @@ describe('upload', () => {
38
38
  });
39
39
 
40
40
  it('does not exceed max file size', function () {
41
- expect($('#mu-upload-file-limit-exceeded').hasClass('hidden')).toBe(true);
41
+ expect($('#mu-upload-file-limit-exceeded').hasClass('d-none')).toBe(true);
42
42
  });
43
43
  });
44
44
 
@@ -56,7 +56,7 @@ describe('upload', () => {
56
56
  });
57
57
 
58
58
  it('does not exceed max file size', function () {
59
- expect($('#mu-upload-file-limit-exceeded').hasClass('hidden')).toBe(true);
59
+ expect($('#mu-upload-file-limit-exceeded').hasClass('d-none')).toBe(true);
60
60
  });
61
61
  });
62
62
 
@@ -74,7 +74,7 @@ describe('upload', () => {
74
74
  });
75
75
 
76
76
  it('exceeds max file size', function () {
77
- expect($('#mu-upload-file-limit-exceeded').hasClass('hidden')).toBe(false);
77
+ expect($('#mu-upload-file-limit-exceeded').hasClass('d-none')).toBe(false);
78
78
  });
79
79
  });
80
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: 9.0.6
4
+ version: 9.2.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-04-09 00:00:00.000000000 Z
11
+ date: 2021-05-06 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: 9.0.6
33
+ version: 9.2.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: 9.0.6
40
+ version: 9.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mumukit-bridge
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '2.0'
117
+ version: '3.0'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '2.0'
124
+ version: '3.0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: muvment
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -179,19 +179,19 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0.16'
181
181
  - !ruby/object:Gem::Dependency
182
- name: bootstrap-kaminari-views
182
+ name: bootstrap5-kaminari-views
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '0'
187
+ version: 0.0.1
188
188
  type: :runtime
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ">="
192
+ - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '0'
194
+ version: 0.0.1
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: font_awesome5_rails
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -439,6 +439,7 @@ files:
439
439
  - app/assets/javascripts/mumuki_laboratory/application/submissions-store.js
440
440
  - app/assets/javascripts/mumuki_laboratory/application/sync-mode.js
441
441
  - app/assets/javascripts/mumuki_laboratory/application/timer.js
442
+ - app/assets/javascripts/mumuki_laboratory/application/toast.js
442
443
  - app/assets/javascripts/mumuki_laboratory/application/tooltip.js
443
444
  - app/assets/javascripts/mumuki_laboratory/application/upload.js
444
445
  - app/assets/javascripts/mumuki_laboratory/application/user.js
@@ -455,13 +456,11 @@ files:
455
456
  - app/assets/stylesheets/mumuki_laboratory/application/_tooltip.scss
456
457
  - app/assets/stylesheets/mumuki_laboratory/application/_vendor.scss
457
458
  - app/assets/stylesheets/mumuki_laboratory/application/codemirror-themes/_mu-light.scss
458
- - app/assets/stylesheets/mumuki_laboratory/application/hovers.scss
459
459
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_activity.scss
460
460
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_avatar.scss
461
461
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss
462
462
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_breadcrumb.scss
463
463
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_certificate.scss
464
- - app/assets/stylesheets/mumuki_laboratory/application/modules/_checkboxes.scss
465
464
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_console.scss
466
465
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_content_show.scss
467
466
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_datepicker.scss
@@ -473,7 +472,6 @@ files:
473
472
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_faqs.scss
474
473
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_flash.scss
475
474
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_gs-board.scss
476
- - app/assets/stylesheets/mumuki_laboratory/application/modules/_guide_corollary.scss
477
475
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_highlight.scss
478
476
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss
479
477
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss
@@ -547,6 +545,7 @@ files:
547
545
  - app/helpers/concerns/with_student_path_navigation/continue_navigation.rb
548
546
  - app/helpers/concerns/with_student_path_navigation/finish_navigation.rb
549
547
  - app/helpers/concerns/with_student_path_navigation/navigation.rb
548
+ - app/helpers/concerns/with_student_path_navigation/next_parent_navigation.rb
550
549
  - app/helpers/concerns/with_student_path_navigation/revisit_navigation.rb
551
550
  - app/helpers/content_view_helper.rb
552
551
  - app/helpers/contextualization_result_helper.rb
@@ -572,6 +571,7 @@ files:
572
571
  - app/helpers/progress_bar_helper.rb
573
572
  - app/helpers/progress_helper.rb
574
573
  - app/helpers/runner_assets_helper.rb
574
+ - app/helpers/toast_helper.rb
575
575
  - app/helpers/user_activity_helper.rb
576
576
  - app/helpers/user_menu_helper.rb
577
577
  - app/mailers/application_mailer.rb
@@ -598,7 +598,9 @@ files:
598
598
  - app/views/errors/internal_server_error.html.erb
599
599
  - app/views/errors/not_found.html.erb
600
600
  - app/views/errors/unauthorized.html.erb
601
- - app/views/exam_authorization_requests/show.html.erb
601
+ - app/views/exam_authorization_requests/_approved.html.erb
602
+ - app/views/exam_authorization_requests/_pending.html.erb
603
+ - app/views/exam_authorization_requests/_rejected.html.erb
602
604
  - app/views/exam_registrations/show.html.erb
603
605
  - app/views/exams/show.html.erb
604
606
  - app/views/exercise_solutions/_assistant_rules_box.html.erb
@@ -714,6 +716,7 @@ files:
714
716
  - app/views/users/certificates.html.erb
715
717
  - app/views/users/discussions.html.erb
716
718
  - app/views/users/edit.html.erb
719
+ - app/views/users/exam_authorizations.html.erb
717
720
  - app/views/users/messages.html.erb
718
721
  - app/views/users/show.html.erb
719
722
  - app/views/users/terms.html.erb
@@ -956,134 +959,134 @@ signing_key:
956
959
  specification_version: 4
957
960
  summary: Code assement web application for the Mumuki Platform.
958
961
  test_files:
962
+ - spec/mailers/user_mailer_spec.rb
963
+ - spec/mailers/previews/user_mailer_preview.rb
964
+ - spec/spec_helper.rb
965
+ - spec/helpers/email_helper_spec.rb
966
+ - spec/helpers/page_title_helper_spec.rb
967
+ - spec/helpers/application_helper_spec.rb
968
+ - spec/helpers/test_results_rendering_spec.rb
969
+ - spec/helpers/with_choices_spec.rb
970
+ - spec/helpers/exercise_input_helper_spec.rb
971
+ - spec/helpers/avatar_helper_spec.rb
972
+ - spec/helpers/with_navigation_spec.rb
973
+ - spec/helpers/certificate_helper_spec.rb
974
+ - spec/helpers/icons_helper_spec.rb
975
+ - spec/helpers/authors_helper_spec.rb
976
+ - spec/helpers/breadcrumbs_helper_spec.rb
977
+ - spec/helpers/user_activity_helper_spec.rb
978
+ - spec/features/guide_reset_spec.rb
979
+ - spec/features/runner_assets_spec.rb
980
+ - spec/features/disable_user_flow_spec.rb
981
+ - spec/features/topic_flow_spec.rb
982
+ - spec/features/complements_flow_spec.rb
983
+ - spec/features/certificate_programs_flow_spec.rb
984
+ - spec/features/not_found_private_flow_spec.rb
985
+ - spec/features/user_activity_flow_spec.rb
986
+ - spec/features/standard_flow_spec.rb
987
+ - spec/features/notifications_flow_spec.rb
988
+ - spec/features/exercise_flow_spec.rb
989
+ - spec/features/chapters_flow_spec.rb
990
+ - spec/features/links_flow_spec.rb
991
+ - spec/features/terms_flow_spec.rb
992
+ - spec/features/home_public_flow_spec.rb
993
+ - spec/features/progressive_tips_spec.rb
994
+ - spec/features/home_private_flow_spec.rb
995
+ - spec/features/discussion_flow_spec.rb
996
+ - spec/features/dynamic_exam_spec.rb
997
+ - spec/features/invitations_flow_spec.rb
998
+ - spec/features/menu_bar_spec.rb
999
+ - spec/features/disabled_organization_flow_spec.rb
1000
+ - spec/features/lessons_flow_spec.rb
1001
+ - spec/features/login_flow_spec.rb
1002
+ - spec/features/guides_flow_spec.rb
1003
+ - spec/features/exams_flow_spec.rb
1004
+ - spec/features/profile_flow_spec.rb
1005
+ - spec/features/immersive_redirection_spec.rb
1006
+ - spec/features/not_found_public_flow_spec.rb
1007
+ - spec/login_helper.rb
1008
+ - spec/teaspoon_env.rb
1009
+ - spec/evaluation_helper.rb
1010
+ - spec/api_helper.rb
1011
+ - spec/capybara_helper.rb
1012
+ - spec/controllers/exercise_solutions_controller_spec.rb
1013
+ - spec/controllers/users_controller_spec.rb
1014
+ - spec/controllers/discussions_messages_controller_spec.rb
1015
+ - spec/controllers/organizations_api_controller_spec.rb
1016
+ - spec/controllers/courses_api_controller_spec.rb
1017
+ - spec/controllers/exam_authorization_requests_controller_spec.rb
1018
+ - spec/controllers/users_api_controller_spec.rb
1019
+ - spec/controllers/api_clients_controller.rb
1020
+ - spec/controllers/certificates_controller_spec.rb
1021
+ - spec/controllers/invitations_controller_spec.rb
1022
+ - spec/controllers/confirmations_controller_spec.rb
1023
+ - spec/controllers/guide_progress_controller_spec.rb
1024
+ - spec/controllers/messages_controller_spec.rb
1025
+ - spec/controllers/discussions_controller_spec.rb
1026
+ - spec/controllers/chapters_controller_spec.rb
1027
+ - spec/controllers/students_api_controller_spec.rb
1028
+ - spec/controllers/exam_registrations_controller_spec.rb
1029
+ - spec/dummy/bin/yarn
1030
+ - spec/dummy/bin/update
1031
+ - spec/dummy/bin/bundle
1032
+ - spec/dummy/bin/setup
1033
+ - spec/dummy/bin/rake
1034
+ - spec/dummy/bin/rails
1035
+ - spec/dummy/config.ru
959
1036
  - spec/dummy/package.json
960
- - spec/dummy/db/schema.rb
961
- - spec/dummy/db/seeds.rb
962
1037
  - spec/dummy/public/character/animations.json
963
1038
  - spec/dummy/public/character/kibi/jump.svg
1039
+ - spec/dummy/public/character/kibi/success_l.svg
1040
+ - spec/dummy/public/character/kibi/failure.svg
964
1041
  - spec/dummy/public/character/kibi/passed_with_warnings.svg
965
1042
  - spec/dummy/public/character/kibi/context.svg
966
- - spec/dummy/public/character/kibi/failure.svg
967
- - spec/dummy/public/character/kibi/success_l.svg
968
1043
  - spec/dummy/public/character/kibi/success2_l.svg
969
1044
  - spec/dummy/public/character/magnifying_glass/apparition.svg
970
1045
  - spec/dummy/public/character/magnifying_glass/loop.svg
971
- - spec/dummy/public/error/timeout_1.svg
1046
+ - spec/dummy/public/medal/outline.svg
972
1047
  - spec/dummy/public/error/timeout_2.svg
973
- - spec/dummy/public/error/410.svg
974
1048
  - spec/dummy/public/error/401.svg
975
- - spec/dummy/public/error/timeout_3.svg
976
- - spec/dummy/public/error/500.svg
977
1049
  - spec/dummy/public/error/404.svg
1050
+ - spec/dummy/public/error/410.svg
1051
+ - spec/dummy/public/error/timeout_1.svg
1052
+ - spec/dummy/public/error/timeout_3.svg
978
1053
  - spec/dummy/public/error/403.svg
979
- - spec/dummy/public/medal/outline.svg
1054
+ - spec/dummy/public/error/500.svg
1055
+ - spec/dummy/db/schema.rb
1056
+ - spec/dummy/db/seeds.rb
980
1057
  - spec/dummy/Rakefile
981
- - spec/dummy/config.ru
982
- - spec/dummy/config/environment.rb
983
- - spec/dummy/config/secrets.yml
984
- - spec/dummy/config/boot.rb
985
- - spec/dummy/config/spring.rb
986
- - spec/dummy/config/database.yml
987
- - spec/dummy/config/routes.rb
988
- - spec/dummy/config/cable.yml
989
- - spec/dummy/config/application.rb
990
1058
  - spec/dummy/config/initializers/filter_parameter_logging.rb
991
- - spec/dummy/config/initializers/assets.rb
992
1059
  - spec/dummy/config/initializers/wrap_parameters.rb
1060
+ - spec/dummy/config/initializers/assets.rb
993
1061
  - spec/dummy/config/initializers/cookies_serializer.rb
994
- - spec/dummy/config/environments/test.rb
1062
+ - spec/dummy/config/secrets.yml
1063
+ - spec/dummy/config/database.yml
1064
+ - spec/dummy/config/boot.rb
1065
+ - spec/dummy/config/locales/en.yml
1066
+ - spec/dummy/config/environment.rb
1067
+ - spec/dummy/config/application.rb
1068
+ - spec/dummy/config/spring.rb
995
1069
  - spec/dummy/config/environments/development.rb
1070
+ - spec/dummy/config/environments/test.rb
1071
+ - spec/dummy/config/routes.rb
996
1072
  - spec/dummy/config/puma.rb
997
- - spec/dummy/config/locales/en.yml
1073
+ - spec/dummy/config/cable.yml
998
1074
  - spec/dummy/config/rabbit.yml
999
- - spec/dummy/bin/rake
1000
- - spec/dummy/bin/bundle
1001
- - spec/dummy/bin/yarn
1002
- - spec/dummy/bin/rails
1003
- - spec/dummy/bin/update
1004
- - spec/dummy/bin/setup
1005
- - spec/capybara_helper.rb
1006
- - spec/controllers/organizations_api_controller_spec.rb
1007
- - spec/controllers/discussions_controller_spec.rb
1008
- - spec/controllers/exercise_solutions_controller_spec.rb
1009
- - spec/controllers/chapters_controller_spec.rb
1010
- - spec/controllers/exam_registrations_controller_spec.rb
1011
- - spec/controllers/exam_authorization_requests_controller_spec.rb
1012
- - spec/controllers/users_controller_spec.rb
1013
- - spec/controllers/confirmations_controller_spec.rb
1014
- - spec/controllers/discussions_messages_controller_spec.rb
1015
- - spec/controllers/certificates_controller_spec.rb
1016
- - spec/controllers/courses_api_controller_spec.rb
1017
- - spec/controllers/students_api_controller_spec.rb
1018
- - spec/controllers/invitations_controller_spec.rb
1019
- - spec/controllers/api_clients_controller.rb
1020
- - spec/controllers/guide_progress_controller_spec.rb
1021
- - spec/controllers/messages_controller_spec.rb
1022
- - spec/controllers/users_api_controller_spec.rb
1023
- - spec/login_helper.rb
1024
- - spec/mailers/user_mailer_spec.rb
1025
- - spec/mailers/previews/user_mailer_preview.rb
1026
- - spec/features/notifications_flow_spec.rb
1027
- - spec/features/standard_flow_spec.rb
1028
- - spec/features/home_private_flow_spec.rb
1029
- - spec/features/home_public_flow_spec.rb
1030
- - spec/features/user_activity_flow_spec.rb
1031
- - spec/features/not_found_private_flow_spec.rb
1032
- - spec/features/certificate_programs_flow_spec.rb
1033
- - spec/features/complements_flow_spec.rb
1034
- - spec/features/exams_flow_spec.rb
1035
- - spec/features/links_flow_spec.rb
1036
- - spec/features/guide_reset_spec.rb
1037
- - spec/features/exercise_flow_spec.rb
1038
- - spec/features/runner_assets_spec.rb
1039
- - spec/features/discussion_flow_spec.rb
1040
- - spec/features/disable_user_flow_spec.rb
1041
- - spec/features/dynamic_exam_spec.rb
1042
- - spec/features/topic_flow_spec.rb
1043
- - spec/features/guides_flow_spec.rb
1044
- - spec/features/immersive_redirection_spec.rb
1045
- - spec/features/chapters_flow_spec.rb
1046
- - spec/features/disabled_organization_flow_spec.rb
1047
- - spec/features/lessons_flow_spec.rb
1048
- - spec/features/not_found_public_flow_spec.rb
1049
- - spec/features/invitations_flow_spec.rb
1050
- - spec/features/login_flow_spec.rb
1051
- - spec/features/menu_bar_spec.rb
1052
- - spec/features/profile_flow_spec.rb
1053
- - spec/features/terms_flow_spec.rb
1054
- - spec/features/progressive_tips_spec.rb
1055
- - spec/javascripts/speech-bubble-renderer-spec.js
1056
- - spec/javascripts/timeout-spec.js
1057
- - spec/javascripts/kids-button-spec.js
1058
- - spec/javascripts/csrf-token-spec.js
1059
- - spec/javascripts/spec-helper.js
1060
- - spec/javascripts/timer-spec.js
1061
- - spec/javascripts/editors-spec.js
1062
- - spec/javascripts/sync-mode-spec.js
1075
+ - spec/javascripts/bridge-spec.js
1076
+ - spec/javascripts/global-spec.js
1063
1077
  - spec/javascripts/gamification-spec.js
1078
+ - spec/javascripts/spec-helper.js
1079
+ - spec/javascripts/exercise-spec.js
1080
+ - spec/javascripts/submissions-store-spec.js
1064
1081
  - spec/javascripts/upload-spec.js
1065
1082
  - spec/javascripts/results-renderers-spec.js
1066
- - spec/javascripts/global-spec.js
1067
- - spec/javascripts/exercise-spec.js
1068
- - spec/javascripts/bridge-spec.js
1083
+ - spec/javascripts/kids-button-spec.js
1084
+ - spec/javascripts/events-spec.js
1085
+ - spec/javascripts/speech-bubble-renderer-spec.js
1086
+ - spec/javascripts/editors-spec.js
1087
+ - spec/javascripts/sync-mode-spec.js
1088
+ - spec/javascripts/timer-spec.js
1089
+ - spec/javascripts/csrf-token-spec.js
1069
1090
  - spec/javascripts/i18n-spec.js
1070
- - spec/javascripts/submissions-store-spec.js
1071
1091
  - spec/javascripts/elipsis-spec.js
1072
- - spec/javascripts/events-spec.js
1073
- - spec/helpers/with_choices_spec.rb
1074
- - spec/helpers/breadcrumbs_helper_spec.rb
1075
- - spec/helpers/application_helper_spec.rb
1076
- - spec/helpers/certificate_helper_spec.rb
1077
- - spec/helpers/with_navigation_spec.rb
1078
- - spec/helpers/user_activity_helper_spec.rb
1079
- - spec/helpers/page_title_helper_spec.rb
1080
- - spec/helpers/authors_helper_spec.rb
1081
- - spec/helpers/avatar_helper_spec.rb
1082
- - spec/helpers/exercise_input_helper_spec.rb
1083
- - spec/helpers/test_results_rendering_spec.rb
1084
- - spec/helpers/icons_helper_spec.rb
1085
- - spec/helpers/email_helper_spec.rb
1086
- - spec/evaluation_helper.rb
1087
- - spec/spec_helper.rb
1088
- - spec/teaspoon_env.rb
1089
- - spec/api_helper.rb
1092
+ - spec/javascripts/timeout-spec.js