mumuki-laboratory 6.6.1 → 6.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -3
  3. data/app/assets/config/mumuki_laboratory_engine.js +2 -0
  4. data/app/assets/javascripts/{application → mumuki_laboratory/application}/alias-modes.js +0 -0
  5. data/app/assets/javascripts/{application → mumuki_laboratory/application}/bridge.js +0 -0
  6. data/app/assets/javascripts/{application → mumuki_laboratory/application}/characters.js +1 -1
  7. data/app/assets/javascripts/{application → mumuki_laboratory/application}/codemirror-builder.js +0 -0
  8. data/app/assets/javascripts/{application → mumuki_laboratory/application}/codemirror.js +0 -0
  9. data/app/assets/javascripts/{application → mumuki_laboratory/application}/confirmation.js +0 -0
  10. data/app/assets/javascripts/{application → mumuki_laboratory/application}/console.js +0 -0
  11. data/app/assets/javascripts/{application → mumuki_laboratory/application}/csrf-token.js +0 -0
  12. data/app/assets/javascripts/{application → mumuki_laboratory/application}/custom-editor.js +0 -0
  13. data/app/assets/javascripts/{application → mumuki_laboratory/application}/discussions.js +0 -0
  14. data/app/assets/javascripts/{application → mumuki_laboratory/application}/free-form.js +0 -0
  15. data/app/assets/javascripts/{application → mumuki_laboratory/application}/inputs.js +0 -0
  16. data/app/assets/javascripts/{application → mumuki_laboratory/application}/kids.js +31 -6
  17. data/app/assets/javascripts/{application → mumuki_laboratory/application}/load-analytics.js +0 -0
  18. data/app/assets/javascripts/{application → mumuki_laboratory/application}/load-error-svg.js +0 -0
  19. data/app/assets/javascripts/{application → mumuki_laboratory/application}/messages.js +0 -0
  20. data/app/assets/javascripts/{application → mumuki_laboratory/application}/multiple-choice.js +0 -0
  21. data/app/assets/javascripts/{application → mumuki_laboratory/application}/multiple-files.js +29 -15
  22. data/app/assets/javascripts/{application → mumuki_laboratory/application}/multiple-scenarios.js +0 -0
  23. data/app/assets/javascripts/{application → mumuki_laboratory/application}/pin.js +0 -0
  24. data/app/assets/javascripts/{application → mumuki_laboratory/application}/popover.js +0 -0
  25. data/app/assets/javascripts/{application → mumuki_laboratory/application}/progress.js +0 -0
  26. data/app/assets/javascripts/{application → mumuki_laboratory/application}/submission.js +0 -0
  27. data/app/assets/javascripts/{application → mumuki_laboratory/application}/timer.js +0 -0
  28. data/app/assets/javascripts/{application → mumuki_laboratory/application}/tooltip.js +0 -0
  29. data/app/assets/javascripts/{application → mumuki_laboratory/application}/upload.js +0 -0
  30. data/app/assets/javascripts/{application → mumuki_laboratory/application}/user.js +0 -0
  31. data/app/assets/javascripts/{application.js → mumuki_laboratory/application.js} +1 -1
  32. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_alerts.scss +0 -0
  33. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_errors.scss +0 -0
  34. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_fonts.scss +0 -0
  35. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_invitations.scss +0 -0
  36. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_layout.scss +0 -0
  37. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_mixins.scss +0 -0
  38. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_modules.scss +0 -0
  39. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_tooltip.scss +0 -0
  40. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/_vendor.scss +0 -0
  41. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/hovers.scss +0 -0
  42. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_book_header.scss +0 -0
  43. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_breadcrumb.scss +0 -0
  44. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_chapter_show.scss +0 -0
  45. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_checkboxes.scss +0 -0
  46. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_console.scss +0 -0
  47. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_discussion.scss +0 -0
  48. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_dropdown.scss +0 -0
  49. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_editor.scss +0 -0
  50. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_exercise_assignment.scss +0 -0
  51. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_exercise_results.scss +0 -0
  52. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_flash.scss +0 -0
  53. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_follow_us.scss +0 -0
  54. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_gs-board.scss +0 -0
  55. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_highlight.scss +0 -0
  56. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_kids.scss +111 -38
  57. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_kids_results.scss +0 -0
  58. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_modal.scss +0 -0
  59. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_organization_chooser.scss +0 -0
  60. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_overlap.scss +0 -0
  61. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_progress_bar.scss +0 -0
  62. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_progress_listing.scss +0 -0
  63. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_timer.scss +0 -0
  64. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/_upload.scss +0 -0
  65. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/guide-corollary.scss +0 -0
  66. data/app/assets/stylesheets/{application → mumuki_laboratory/application}/modules/popover.scss +0 -0
  67. data/app/assets/stylesheets/{application.scss → mumuki_laboratory/application.scss} +3 -3
  68. data/app/controllers/invitations_controller.rb +1 -1
  69. data/app/helpers/assets_helper.rb +2 -2
  70. data/app/helpers/authors_helper.rb +10 -0
  71. data/app/helpers/discussions_helper.rb +6 -2
  72. data/app/views/book/show.html.erb +1 -1
  73. data/app/views/discussions/show.html.erb +1 -1
  74. data/app/views/invitations/show.html.erb +1 -1
  75. data/app/views/layouts/_authoring.html.erb +1 -1
  76. data/app/views/layouts/_kids.html.erb +5 -2
  77. data/app/views/layouts/_submission_result_error_body.html.erb +1 -1
  78. data/app/views/layouts/exercise_inputs/read_only_editors/_custom.html.erb +3 -3
  79. data/lib/mumuki/laboratory/locales/en.yml +5 -4
  80. data/lib/mumuki/laboratory/locales/es.yml +5 -4
  81. data/lib/mumuki/laboratory/locales/pt.yml +5 -4
  82. data/lib/mumuki/laboratory/version.rb +1 -1
  83. data/spec/dummy/public/character/animations.json +1 -0
  84. data/spec/features/invitations_flow_spec.rb +46 -0
  85. data/spec/helpers/authors_helper_spec.rb +18 -0
  86. data/vendor/assets/javascripts/codemirror-modes/index.js +1 -0
  87. metadata +73 -66
@@ -3,6 +3,10 @@ module DiscussionsHelper
3
3
  discussions_link others_discussions_icon(t(:solve_your_doubts)), item_discussions_path(item, default_discussions_params)
4
4
  end
5
5
 
6
+ def kids_read_discussions_link(item)
7
+ discussions_link fixed_fa_icon('question-circle'), item_discussions_path(item, default_discussions_params), title: t(:solve_your_doubts), class: 'mu-kids-discussion-link'
8
+ end
9
+
6
10
  def solve_discussions_link
7
11
  discussions_link others_discussions_icon(t(:solve_doubts)), discussions_path(solve_discussion_params_for(current_user))
8
12
  end
@@ -19,8 +23,8 @@ module DiscussionsHelper
19
23
  fixed_fa_icon 'comment', text: text
20
24
  end
21
25
 
22
- def discussions_link(item, path, organization=Organization.current)
23
- link_to item, path if organization.forum_enabled?
26
+ def discussions_link(item, path, html_options=nil, organization=Organization.current)
27
+ link_to item, path, html_options if organization.forum_enabled?
24
28
  end
25
29
 
26
30
  def item_discussion_path(discussion, params={})
@@ -9,7 +9,7 @@
9
9
  <h3>
10
10
  <small><%= Organization.current.description %></small>
11
11
  <br>
12
- <small><%= raw t :powered_by_mumuki %></small>
12
+ <small><%= t :powered_by_mumuki_html %></small>
13
13
  </h3>
14
14
  <% end %>
15
15
  </div>
@@ -5,7 +5,7 @@
5
5
 
6
6
  <div>
7
7
  <div class="row">
8
- <% if current_user && !current_user.moderator_here? %>
8
+ <% if current_user %>
9
9
  <div class="mu-inline-block-right hidden-xs discussion-user-menu">
10
10
  <h3>
11
11
  <% if @discussion.subscribable? %>
@@ -2,7 +2,7 @@
2
2
  <%= breadcrumbs @invitation %>
3
3
  <% end %>
4
4
  <div>
5
- <h3><%= raw t(:joining, course: @invitation.course.name) %> </h3>
5
+ <h3><%= t(:joining_html, course: @invitation.course.name) %> </h3>
6
6
  </div>
7
7
  <div>
8
8
  <span><%= t :please_validate %></span>
@@ -6,7 +6,7 @@
6
6
  <%= render partial: 'layouts/copyright' %> -
7
7
  </span>
8
8
  <% end %>
9
- <%= raw t :authoring_note, authors: guide.authors, collaborators: "https://raw.githubusercontent.com/#{guide.slug}/master/COLLABORATORS.txt" %>
9
+ <%= attribution_caption(guide) %>
10
10
  </p>
11
11
  <% end %>
12
12
  <% end %>
@@ -2,11 +2,11 @@
2
2
  <div class="mu-kids-character-speech-bubble <%= 'no-tabs' unless exercise.hint? %>">
3
3
  <% if exercise.hint? %>
4
4
  <ul class="mu-kids-character-speech-bubble-tabs">
5
- <li class="active" data-target="description" title="<%= t :task %>">
5
+ <li class="mu-kids-description active" data-target="description" title="<%= t :task %>">
6
6
  <i class="fa fa-fw fa-file-text-o"></i>
7
7
  </li>
8
8
  <li class="separator"></li>
9
- <li data-target="hint" title="<%= t :need_a_hint %>">
9
+ <li class="mu-kids-hint blink" data-target="hint" title="<%= t :need_a_hint %>">
10
10
  <i class="fa fa-fw fa-lightbulb-o"></i>
11
11
  </li>
12
12
  </ul>
@@ -19,3 +19,6 @@
19
19
  </div>
20
20
  <div class="mu-kids-character-speech-bubble-failed <%= @assignment&.status %>" style="display: none"></div>
21
21
  </div>
22
+ <div id="mu-kids-discussion-link-html" class="hidden">
23
+ <%= kids_read_discussions_link(exercise) %>
24
+ </div>
@@ -1,6 +1,6 @@
1
1
  <div class="submission-result-error-body">
2
2
  <img class="submission-result-error-animation"/>
3
3
  <ul class="submission-result-error-body-description">
4
- <%= raw t :abort_explanation %>
4
+ <%= t :abort_explanation_html %>
5
5
  </ul>
6
6
  </div>
@@ -1,6 +1,6 @@
1
1
  <%= render_runner_assets exercise.language, :editor %>
2
2
 
3
3
  <%= render_custom_editor(exercise, true) %>
4
- <%= hidden_field :content, id: "mu-custom-editor-value", value: content %>
5
- <%= hidden_field :default_content, id: "mu-custom-editor-default-value", value: exercise.default_content %>
6
- <%= hidden_field :content_extra, id: "mu-custom-editor-extra", value: exercise.extra %>
4
+ <%= hidden_field :content, :custom_editor, id: "mu-custom-editor-value", value: content %>
5
+ <%= hidden_field :default_content, :custom_editor, id: "mu-custom-editor-default-value", value: exercise.default_content %>
6
+ <%= hidden_field :content_extra, :custom_editor, id: "mu-custom-editor-extra", value: exercise.extra %>
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  en:
3
3
  aborted: Oops, we couldn't evaluate your solution
4
- abort_explanation: <li>Check that your program does not have recursion or an infinite loop</li> <li>Check that you have an internet connection</li> <li>Wait a while and try again</li>
4
+ abort_explanation_html: <li>Check that your program does not have recursion or an infinite loop</li> <li>Check that you have an internet connection</li> <li>Wait a while and try again</li>
5
5
  about: About
6
6
  accept_terms: I accept the terms and conditions
7
7
  actions: Actions
@@ -20,7 +20,8 @@ en:
20
20
  other: '%{count} attempts remaining'
21
21
  author: Author
22
22
  authoring: "Authoring"
23
- authoring_note: This guide's content was developed by %{authors} and <a href="%{collaborators}" target="_blank">many others</a>, under the terms of <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons License Share-Alike, 4.0</a>
23
+ authoring_note_html: This guide's content was developed by %{authors} under the terms of <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons License Share-Alike, 4.0</a>
24
+ authoring_note_with_collaborators_html: This guide's content was developed by %{authors} and <a href="%{collaborators}" target="_blank">many others</a>, under the terms of <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons License Share-Alike, 4.0</a>
24
25
  back_to_mumuki: Back to Mumuki!
25
26
  bibliotheca_ui: Bibliotheca
26
27
  blocked_forum_explanation: You are not allowed to see this content. <br> Are you in the middle of an exam right now?
@@ -97,7 +98,7 @@ en:
97
98
  invitation_for: 'Join %{course}'
98
99
  item_not_accessible: "You are not permitted to access this content"
99
100
  its_been_a_while: It's been a while since you last used Mumuki.
100
- joining: You're about to join
101
+ joining_html: '¡Welcome to course <strong>%{course}</strong>!'
101
102
  keep_learning: Keep learning!
102
103
  kids_default_success: You did it great!
103
104
  language: Language
@@ -159,7 +160,7 @@ en:
159
160
  permissions: Permissions
160
161
  please_fill_profile_data: Please complete your profile data to continue!
161
162
  please_validate: 'Please validate your data before continue:'
162
- powered_by_mumuki: "powered by <span class=\"da da-mumuki-circle\"></span> mumuki"
163
+ powered_by_mumuki_html: "powered by <span class=\"da da-mumuki-circle\"></span> mumuki"
163
164
  previous_exercise: Previous
164
165
  problem_with_exercise: '[Mumuki] Problem with exercise: %{title}'
165
166
  processing_your_solution: We are processing you solution
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  es:
3
3
  aborted: Ups, no pudimos evaluar tu solución
4
- abort_explanation: <li>Revisá que tu programa no tenga recursión o algún bucle infinito</li><li>Revisá que tengas conexión a internet</li><li>Esperá un rato e intentalo nuevamente</li>
4
+ abort_explanation_html: <li>Revisá que tu programa no tenga recursión o algún bucle infinito</li><li>Revisá que tengas conexión a internet</li><li>Esperá un rato e intentalo nuevamente</li>
5
5
  about: Detalles
6
6
  accept_terms: Acepto los términos y condiciones
7
7
  actions: Acciones
@@ -22,7 +22,8 @@ es:
22
22
  other: '%{count} intentos restantes'
23
23
  author: Autor
24
24
  authoring: "Autores"
25
- authoring_note: Esta guía fue desarrollada por %{authors} y <a href="%{collaborators}" target="_blank">muchas personas más</a>, bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
25
+ authoring_note_html: Esta guía fue desarrollada por %{authors} bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
26
+ authoring_note_with_collaborators_html: Esta guía fue desarrollada por %{authors} y <a href="%{collaborators}" target="_blank">muchas personas más</a>, bajo los términos de la <a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Licencia Creative Commons Compartir-Igual, 4.0</a>.
26
27
  back_to_mumuki: ¡Volvé a Mumuki!
27
28
  bibliotheca_ui: Biblioteca
28
29
  blocked_forum_explanation: Es decir que no tenés autorización para ver este contenido. <br> ¿Puede que estés en medio de un examen?
@@ -108,7 +109,7 @@ es:
108
109
  invitation_for: 'Unirse a %{course}'
109
110
  item_not_accessible: "No tenés permisos para acceder a este contenido"
110
111
  its_been_a_while: Hace un tiempo que no usás Mumuki.
111
- joining: '¡Te damos la bienvenida al curso <strong>%{course}</strong>!'
112
+ joining_html: '¡Te damos la bienvenida al curso <strong>%{course}</strong>!'
112
113
  keep_learning: ¡Seguí aprendiendo!
113
114
  kids_default_success: ¡Lo hiciste muy bien!
114
115
  language: Lenguaje
@@ -178,7 +179,7 @@ es:
178
179
  permissions: Permisos
179
180
  please_fill_profile_data: ¡Completá tus datos personales para continuar!
180
181
  please_validate: 'Estás a punto de ingresar al curso. Para poder ofrecerte una mejor experiencia, por favor validá que tus datos a continuación sean reales y correctos.'
181
- powered_by_mumuki: "por <span class=\"da da-mumuki-circle\"></span> mumuki"
182
+ powered_by_mumuki_html: "por <span class=\"da da-mumuki-circle\"></span> mumuki"
182
183
  previous_exercise: Anterior
183
184
  problem_with_exercise: '[Mumuki] Error con el ejercicio: %{title}'
184
185
  processing_your_solution: Estamos procesando tu solución
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  pt:
3
3
  aborted: Opa, não pudemos avaliar sua solução
4
- abort_explanation: <li>Verifique se o seu programa não possui recursão ou um loop infinito</li> <li>Verifique se você tem uma conexão com a internet</li> <li>Espere um pouco e tente novamente</li>
4
+ abort_explanation_html: <li>Verifique se o seu programa não possui recursão ou um loop infinito</li> <li>Verifique se você tem uma conexão com a internet</li> <li>Espere um pouco e tente novamente</li>
5
5
  about: Detalhes
6
6
  accept_terms: Aceito os termos e condições
7
7
  actions: Ações
@@ -21,7 +21,8 @@ pt:
21
21
  other: '%{count} tentativa restante'
22
22
  author: Autor
23
23
  authoring: Autores
24
- authoring_note: 'Este guia foi desenvolvido por %{authors} e <a href="%{collaborators}" target="_blank"> muitas outras pessoas </a>, nos termos do <a href = "https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"> Creative Commons License Share-Equal, 4.0 </a>.'
24
+ authoring_note_html: 'Este guia foi desenvolvido por %{authors} nos termos do <a href = "https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"> Creative Commons License Share-Equal, 4.0 </a>.'
25
+ authoring_note_with_collaborators_html: 'Este guia foi desenvolvido por %{authors} e <a href="%{collaborators}" target="_blank">muitas outras pessoas </a>, nos termos do <a href = "https://creativecommons.org/licenses/by-sa/4.0/" target="_blank"> Creative Commons License Share-Equal, 4.0 </a>.'
25
26
  back_to_mumuki: Voltei para Mumuki!
26
27
  bibliotheca_ui: Biblioteca
27
28
  blocked_forum_explanation: Você não tem permissão para ver este conteúdo. <br> Você está no meio de um exame agora?
@@ -104,7 +105,7 @@ pt:
104
105
  invitation: Convite para o curso
105
106
  invitation_for: Participe %{curso}
106
107
  item_not_accessible: Você não tem permissões para acessar este conteúdo
107
- joining: Bem-vindo ao curso <strong> %{curso} </strong>!
108
+ joining_html: Bem-vindo ao curso <strong> %{curso} </strong>!
108
109
  kids_default_success: Você fez muito bem!
109
110
  language: Linguagem
110
111
  languages: Linguagens
@@ -170,7 +171,7 @@ pt:
170
171
  permissions: Permissões
171
172
  please_fill_profile_data: Preencha suas informações pessoais para continuar!
172
173
  please_validate: Você está prestes a entrar no curso. Para oferecer uma experiência melhor, valide que seus dados abaixo sejam reais e corretos.
173
- powered_by_mumuki: por <span class = "da da-mumuki-circle"> </ span> mumuki
174
+ powered_by_mumuki_html: por <span class = "da da-mumuki-circle"> </ span> mumuki
174
175
  previous_exercise: Anterior
175
176
  problem_with_exercise: '[Mumuki] Erro com exercício %{title}'
176
177
  processing_your_solution: Estamos processando sua solução
@@ -1,5 +1,5 @@
1
1
  module Mumuki
2
2
  module Laboratory
3
- VERSION = '6.6.1'
3
+ VERSION = '6.7.0'
4
4
  end
5
5
  end
@@ -9,6 +9,7 @@
9
9
  "success_l"
10
10
  ],
11
11
  "actions": {
12
+ "blink": "jump",
12
13
  "talk": "jump"
13
14
  }
14
15
  }
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Invitations Flow', organization_workspace: :test do
4
+ let(:organization) { Organization.current }
5
+
6
+ let(:guide) { create(:guide) }
7
+ let(:chapter) {
8
+ create(:chapter, lessons: [
9
+ create(:lesson, guide: guide)
10
+ ]) }
11
+ let(:book) { organization.book }
12
+
13
+ before do
14
+ book.update! chapters: [chapter]
15
+ end
16
+
17
+ let(:permissions) { { } }
18
+ let(:user) { create(:user, permissions: permissions) }
19
+ before { set_current_user!(user) }
20
+
21
+ let(:nodejs_course) { create(:course, slug: 'test/nodejs', name: 'Curso de NodeJS', organization: organization) }
22
+ let(:python_course) { create(:course, slug: 'test/python', name: 'Curso de Python', organization: organization) }
23
+ let!(:nodejs_invitation) { create(:invitation, code: 'invitacionAlNodejs', course: nodejs_course) }
24
+ let!(:python_invitation) { create(:invitation, code: 'invitacionAlPython', course: python_course) }
25
+
26
+ context 'with no memberships' do
27
+ scenario 'visit invitation' do
28
+ visit '/join/invitacionAlNodejs'
29
+ expect(page).to have_text('Join Curso de NodeJS')
30
+ end
31
+ end
32
+
33
+ context 'with existing memberships' do
34
+ let(:permissions) { { student: 'test/nodejs' } }
35
+
36
+ scenario 'visit invitation, already joined' do
37
+ visit '/join/invitacionAlNodejs'
38
+ expect(page).to have_text('Start Practicing!')
39
+ end
40
+
41
+ scenario 'visit invitation, not joined' do
42
+ visit '/join/invitacionAlPython'
43
+ expect(page).to have_text('Join Curso de Python')
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe AuthorsHelper, organization_workspace: :test do
4
+ helper AuthorsHelper
5
+
6
+ describe 'authoring_notes' do
7
+ context 'with collaborators' do
8
+ let(:guide) { create(:guide, authors: 'Writer', collaborators: 'Collaborators') }
9
+ it { expect(attribution_caption(guide)).to include "many others" }
10
+ end
11
+
12
+ context 'with no collaborators' do
13
+ let(:guide) { create(:guide, authors: 'Writer') }
14
+ it { expect(attribution_caption(guide)).not_to include "many others" }
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1 @@
1
+ //= require_tree .
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: 6.6.1
4
+ version: 6.7.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: 2019-05-06 00:00:00.000000000 Z
11
+ date: 2019-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -174,72 +174,73 @@ files:
174
174
  - LICENSE
175
175
  - README.md
176
176
  - Rakefile
177
+ - app/assets/config/mumuki_laboratory_engine.js
177
178
  - app/assets/images/logo.png
178
179
  - app/assets/images/user_shape.png
179
- - app/assets/javascripts/application.js
180
- - app/assets/javascripts/application/alias-modes.js
181
- - app/assets/javascripts/application/bridge.js
182
- - app/assets/javascripts/application/characters.js
183
- - app/assets/javascripts/application/codemirror-builder.js
184
- - app/assets/javascripts/application/codemirror.js
185
- - app/assets/javascripts/application/confirmation.js
186
- - app/assets/javascripts/application/console.js
187
- - app/assets/javascripts/application/csrf-token.js
188
- - app/assets/javascripts/application/custom-editor.js
189
- - app/assets/javascripts/application/discussions.js
190
- - app/assets/javascripts/application/free-form.js
191
- - app/assets/javascripts/application/inputs.js
192
- - app/assets/javascripts/application/kids.js
193
- - app/assets/javascripts/application/load-analytics.js
194
- - app/assets/javascripts/application/load-error-svg.js
195
- - app/assets/javascripts/application/messages.js
196
- - app/assets/javascripts/application/multiple-choice.js
197
- - app/assets/javascripts/application/multiple-files.js
198
- - app/assets/javascripts/application/multiple-scenarios.js
199
- - app/assets/javascripts/application/pin.js
200
- - app/assets/javascripts/application/popover.js
201
- - app/assets/javascripts/application/progress.js
202
- - app/assets/javascripts/application/submission.js
203
- - app/assets/javascripts/application/timer.js
204
- - app/assets/javascripts/application/tooltip.js
205
- - app/assets/javascripts/application/upload.js
206
- - app/assets/javascripts/application/user.js
207
- - app/assets/stylesheets/application.scss
208
- - app/assets/stylesheets/application/_alerts.scss
209
- - app/assets/stylesheets/application/_errors.scss
210
- - app/assets/stylesheets/application/_fonts.scss
211
- - app/assets/stylesheets/application/_invitations.scss
212
- - app/assets/stylesheets/application/_layout.scss
213
- - app/assets/stylesheets/application/_mixins.scss
214
- - app/assets/stylesheets/application/_modules.scss
215
- - app/assets/stylesheets/application/_tooltip.scss
216
- - app/assets/stylesheets/application/_vendor.scss
217
- - app/assets/stylesheets/application/hovers.scss
218
- - app/assets/stylesheets/application/modules/_book_header.scss
219
- - app/assets/stylesheets/application/modules/_breadcrumb.scss
220
- - app/assets/stylesheets/application/modules/_chapter_show.scss
221
- - app/assets/stylesheets/application/modules/_checkboxes.scss
222
- - app/assets/stylesheets/application/modules/_console.scss
223
- - app/assets/stylesheets/application/modules/_discussion.scss
224
- - app/assets/stylesheets/application/modules/_dropdown.scss
225
- - app/assets/stylesheets/application/modules/_editor.scss
226
- - app/assets/stylesheets/application/modules/_exercise_assignment.scss
227
- - app/assets/stylesheets/application/modules/_exercise_results.scss
228
- - app/assets/stylesheets/application/modules/_flash.scss
229
- - app/assets/stylesheets/application/modules/_follow_us.scss
230
- - app/assets/stylesheets/application/modules/_gs-board.scss
231
- - app/assets/stylesheets/application/modules/_highlight.scss
232
- - app/assets/stylesheets/application/modules/_kids.scss
233
- - app/assets/stylesheets/application/modules/_kids_results.scss
234
- - app/assets/stylesheets/application/modules/_modal.scss
235
- - app/assets/stylesheets/application/modules/_organization_chooser.scss
236
- - app/assets/stylesheets/application/modules/_overlap.scss
237
- - app/assets/stylesheets/application/modules/_progress_bar.scss
238
- - app/assets/stylesheets/application/modules/_progress_listing.scss
239
- - app/assets/stylesheets/application/modules/_timer.scss
240
- - app/assets/stylesheets/application/modules/_upload.scss
241
- - app/assets/stylesheets/application/modules/guide-corollary.scss
242
- - app/assets/stylesheets/application/modules/popover.scss
180
+ - app/assets/javascripts/mumuki_laboratory/application.js
181
+ - app/assets/javascripts/mumuki_laboratory/application/alias-modes.js
182
+ - app/assets/javascripts/mumuki_laboratory/application/bridge.js
183
+ - app/assets/javascripts/mumuki_laboratory/application/characters.js
184
+ - app/assets/javascripts/mumuki_laboratory/application/codemirror-builder.js
185
+ - app/assets/javascripts/mumuki_laboratory/application/codemirror.js
186
+ - app/assets/javascripts/mumuki_laboratory/application/confirmation.js
187
+ - app/assets/javascripts/mumuki_laboratory/application/console.js
188
+ - app/assets/javascripts/mumuki_laboratory/application/csrf-token.js
189
+ - app/assets/javascripts/mumuki_laboratory/application/custom-editor.js
190
+ - app/assets/javascripts/mumuki_laboratory/application/discussions.js
191
+ - app/assets/javascripts/mumuki_laboratory/application/free-form.js
192
+ - app/assets/javascripts/mumuki_laboratory/application/inputs.js
193
+ - app/assets/javascripts/mumuki_laboratory/application/kids.js
194
+ - app/assets/javascripts/mumuki_laboratory/application/load-analytics.js
195
+ - app/assets/javascripts/mumuki_laboratory/application/load-error-svg.js
196
+ - app/assets/javascripts/mumuki_laboratory/application/messages.js
197
+ - app/assets/javascripts/mumuki_laboratory/application/multiple-choice.js
198
+ - app/assets/javascripts/mumuki_laboratory/application/multiple-files.js
199
+ - app/assets/javascripts/mumuki_laboratory/application/multiple-scenarios.js
200
+ - app/assets/javascripts/mumuki_laboratory/application/pin.js
201
+ - app/assets/javascripts/mumuki_laboratory/application/popover.js
202
+ - app/assets/javascripts/mumuki_laboratory/application/progress.js
203
+ - app/assets/javascripts/mumuki_laboratory/application/submission.js
204
+ - app/assets/javascripts/mumuki_laboratory/application/timer.js
205
+ - app/assets/javascripts/mumuki_laboratory/application/tooltip.js
206
+ - app/assets/javascripts/mumuki_laboratory/application/upload.js
207
+ - app/assets/javascripts/mumuki_laboratory/application/user.js
208
+ - app/assets/stylesheets/mumuki_laboratory/application.scss
209
+ - app/assets/stylesheets/mumuki_laboratory/application/_alerts.scss
210
+ - app/assets/stylesheets/mumuki_laboratory/application/_errors.scss
211
+ - app/assets/stylesheets/mumuki_laboratory/application/_fonts.scss
212
+ - app/assets/stylesheets/mumuki_laboratory/application/_invitations.scss
213
+ - app/assets/stylesheets/mumuki_laboratory/application/_layout.scss
214
+ - app/assets/stylesheets/mumuki_laboratory/application/_mixins.scss
215
+ - app/assets/stylesheets/mumuki_laboratory/application/_modules.scss
216
+ - app/assets/stylesheets/mumuki_laboratory/application/_tooltip.scss
217
+ - app/assets/stylesheets/mumuki_laboratory/application/_vendor.scss
218
+ - app/assets/stylesheets/mumuki_laboratory/application/hovers.scss
219
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss
220
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_breadcrumb.scss
221
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_chapter_show.scss
222
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_checkboxes.scss
223
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_console.scss
224
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss
225
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_dropdown.scss
226
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_editor.scss
227
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_assignment.scss
228
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_exercise_results.scss
229
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_flash.scss
230
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_follow_us.scss
231
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_gs-board.scss
232
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_highlight.scss
233
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss
234
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss
235
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_modal.scss
236
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_organization_chooser.scss
237
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_overlap.scss
238
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_bar.scss
239
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_listing.scss
240
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_timer.scss
241
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_upload.scss
242
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/guide-corollary.scss
243
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/popover.scss
243
244
  - app/controllers/ajax_controller.rb
244
245
  - app/controllers/api/base_controller.rb
245
246
  - app/controllers/api/courses_controller.rb
@@ -281,6 +282,7 @@ files:
281
282
  - app/helpers/assets_helper.rb
282
283
  - app/helpers/assignment_result_helper.rb
283
284
  - app/helpers/assistance_box_helper.rb
285
+ - app/helpers/authors_helper.rb
284
286
  - app/helpers/breadcrumbs_helper.rb
285
287
  - app/helpers/choices_helper.rb
286
288
  - app/helpers/concerns/with_student_path_navigation.rb
@@ -512,6 +514,7 @@ files:
512
514
  - spec/features/guides_flow_spec.rb
513
515
  - spec/features/home_private_flow_spec.rb
514
516
  - spec/features/home_public_flow_spec.rb
517
+ - spec/features/invitations_flow_spec.rb
515
518
  - spec/features/lessons_flow_spec.rb
516
519
  - spec/features/links_flow_spec.rb
517
520
  - spec/features/login_flow_spec.rb
@@ -523,6 +526,7 @@ files:
523
526
  - spec/features/standard_flow_spec.rb
524
527
  - spec/features/topic_flow_spec.rb
525
528
  - spec/helpers/application_helper_spec.rb
529
+ - spec/helpers/authors_helper_spec.rb
526
530
  - spec/helpers/breadcrumbs_helper_spec.rb
527
531
  - spec/helpers/email_helper_spec.rb
528
532
  - spec/helpers/exercise_input_helper_spec.rb
@@ -549,6 +553,7 @@ files:
549
553
  - vendor/assets/javascripts/codemirror-modes/haskell.min.js
550
554
  - vendor/assets/javascripts/codemirror-modes/html-hint.min.js
551
555
  - vendor/assets/javascripts/codemirror-modes/htmlmixed.min.js
556
+ - vendor/assets/javascripts/codemirror-modes/index.js
552
557
  - vendor/assets/javascripts/codemirror-modes/javascript-hint.min.js
553
558
  - vendor/assets/javascripts/codemirror-modes/javascript.min.js
554
559
  - vendor/assets/javascripts/codemirror-modes/markdown.min.js
@@ -653,6 +658,7 @@ test_files:
653
658
  - spec/helpers/with_choices_spec.rb
654
659
  - spec/helpers/with_navigation_spec.rb
655
660
  - spec/helpers/icons_helper_spec.rb
661
+ - spec/helpers/authors_helper_spec.rb
656
662
  - spec/helpers/application_helper_spec.rb
657
663
  - spec/capybara_helper.rb
658
664
  - spec/features/standard_flow_spec.rb
@@ -675,3 +681,4 @@ test_files:
675
681
  - spec/features/not_found_public_flow_spec.rb
676
682
  - spec/features/exams_flow_spec.rb
677
683
  - spec/features/links_flow_spec.rb
684
+ - spec/features/invitations_flow_spec.rb