mumuki-laboratory 7.10.3 → 7.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -7
  3. data/Rakefile +9 -2
  4. data/app/assets/javascripts/mumuki_laboratory/application/bridge.js +26 -5
  5. data/app/assets/javascripts/mumuki_laboratory/application/gamification.js +85 -0
  6. data/app/assets/javascripts/mumuki_laboratory/application/kindergarten.js +145 -0
  7. data/app/assets/javascripts/mumuki_laboratory/application/profile.js +31 -16
  8. data/app/assets/javascripts/mumuki_laboratory/application/submission.js +1 -0
  9. data/app/assets/javascripts/mumuki_laboratory/application/submissions-store.js +19 -2
  10. data/app/assets/stylesheets/mumuki_laboratory/application/_errors.scss +3 -4
  11. data/app/assets/stylesheets/mumuki_laboratory/application/_modules.scss +3 -1
  12. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_avatar.scss +21 -0
  13. data/app/assets/stylesheets/mumuki_laboratory/application/modules/{_chapter_show.scss → _content_show.scss} +0 -0
  14. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_kindergarten.scss +401 -12
  15. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_medal.scss +48 -0
  16. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_terms.scss +44 -0
  17. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss +9 -0
  18. data/app/controllers/application_controller.rb +15 -8
  19. data/app/controllers/book_discussions_controller.rb +4 -0
  20. data/app/controllers/users_controller.rb +8 -2
  21. data/app/helpers/application_helper.rb +2 -2
  22. data/app/helpers/avatar_helper.rb +11 -3
  23. data/app/helpers/kindergarten_helper.rb +5 -0
  24. data/app/helpers/links_helper.rb +8 -0
  25. data/app/helpers/medal_helper.rb +36 -0
  26. data/app/helpers/open_graph_helper.rb +2 -2
  27. data/app/helpers/organization_list_helper.rb +1 -1
  28. data/app/helpers/overlapped_buttons_helper.rb +1 -1
  29. data/app/helpers/page_title_helper.rb +2 -2
  30. data/app/helpers/profile_helper.rb +9 -1
  31. data/app/views/book/_header.html.erb +17 -0
  32. data/app/views/book/show.html.erb +1 -18
  33. data/app/views/discussions/terms.html.erb +10 -0
  34. data/app/views/exercises/show.html.erb +1 -0
  35. data/app/views/invitations/_invitation_form.html.erb +1 -0
  36. data/app/views/layouts/_discussions.html.erb +5 -1
  37. data/app/views/layouts/_error.html.erb +3 -6
  38. data/app/views/layouts/_guide.html.erb +10 -3
  39. data/app/views/layouts/_kindergarten.html.erb +38 -0
  40. data/app/views/layouts/_main.html.erb +3 -1
  41. data/app/views/layouts/_organization_chooser.html.erb +0 -7
  42. data/app/views/layouts/_terms_acceptance_disclaimer.html.erb +6 -0
  43. data/app/views/layouts/application.html.erb +3 -2
  44. data/app/views/layouts/exercise_inputs/layouts/_input_kindergarten.html.erb +27 -27
  45. data/app/views/layouts/modals/_guide_corollary.html.erb +9 -0
  46. data/app/views/layouts/modals/_kindergarten_context.html.erb +30 -0
  47. data/app/views/layouts/modals/_kindergarten_results.html.erb +23 -0
  48. data/app/views/layouts/modals/_kindergarten_results_aborted.html.erb +24 -0
  49. data/app/views/users/_avatar_list.html.erb +6 -2
  50. data/app/views/users/_edit_user_form.html.erb +9 -4
  51. data/app/views/users/_term.html.erb +10 -0
  52. data/app/views/users/_user_form.html.erb +5 -1
  53. data/app/views/users/terms.html.erb +18 -0
  54. data/config/routes.rb +2 -0
  55. data/lib/mumuki/laboratory/controllers/current_organization.rb +1 -1
  56. data/lib/mumuki/laboratory/controllers/results_rendering.rb +3 -2
  57. data/lib/mumuki/laboratory/locales/en.yml +10 -5
  58. data/lib/mumuki/laboratory/locales/es-CL.yml +5 -4
  59. data/lib/mumuki/laboratory/locales/es.yml +12 -7
  60. data/lib/mumuki/laboratory/locales/pt.yml +12 -7
  61. data/lib/mumuki/laboratory/version.rb +1 -1
  62. data/spec/capybara_helper.rb +99 -0
  63. data/spec/controllers/exercise_solutions_controller_spec.rb +3 -4
  64. data/spec/dummy/db/schema.rb +37 -1
  65. data/spec/dummy/public/medal/outline.svg +1089 -0
  66. data/spec/features/choose_organization_spec.rb +12 -30
  67. data/spec/features/disable_user_flow_spec.rb +3 -5
  68. data/spec/features/disabled_organization_flow_spec.rb +9 -14
  69. data/spec/features/exercise_flow_spec.rb +2 -2
  70. data/spec/features/guide_reset_spec.rb +1 -1
  71. data/spec/features/guides_flow_spec.rb +1 -1
  72. data/spec/features/home_private_flow_spec.rb +1 -3
  73. data/spec/features/home_public_flow_spec.rb +6 -12
  74. data/spec/features/invitations_flow_spec.rb +2 -2
  75. data/spec/features/login_flow_spec.rb +2 -2
  76. data/spec/features/not_found_private_flow_spec.rb +4 -4
  77. data/spec/features/not_found_public_flow_spec.rb +1 -6
  78. data/spec/features/profile_flow_spec.rb +1 -1
  79. data/spec/helpers/page_title_helper_spec.rb +3 -3
  80. data/spec/javascripts/editors-spec.js +23 -0
  81. data/spec/javascripts/gamification-spec.js +58 -0
  82. data/spec/javascripts/submissions-store-spec.js +139 -6
  83. data/spec/spec_helper.rb +2 -0
  84. data/spec/teaspoon_env.rb +24 -6
  85. metadata +40 -7
@@ -12,33 +12,166 @@ describe("SubmissionsStore", () => {
12
12
  describe('getLastSubmission', () => {
13
13
  it("answers null if submission not present", () => {
14
14
  expect(mumuki.SubmissionsStore.getLastSubmissionAndResult(1)).toBe(null)
15
- })
15
+ });
16
16
 
17
17
  it("answers the last submission result if already sent", () => {
18
18
  mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
19
19
  expect(mumuki.SubmissionsStore.getLastSubmissionAndResult(1)).toEqual(passedEmptyProgramSubmissionAndResult)
20
- })
21
- })
20
+ });
21
+ });
22
22
 
23
23
  describe('getLastSubmissionStatus', () => {
24
24
  it("answers pending if submission not present", () => {
25
25
  expect(mumuki.SubmissionsStore.getLastSubmissionStatus(1)).toBe('pending')
26
- })
26
+ });
27
27
 
28
28
  it("answers the last submission status if previously sent", () => {
29
29
  mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
30
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
36
  expect(mumuki.SubmissionsStore.getSubmissionResultFor(1, emptyProgramSubmission)).toBe(null)
37
- })
37
+ });
38
38
 
39
39
  it("answers the last submission if previously sent", () => {
40
40
  mumuki.SubmissionsStore.setSubmissionResultFor(1, passedEmptyProgramSubmissionAndResult)
41
41
  expect(mumuki.SubmissionsStore.getSubmissionResultFor(1, emptyProgramSubmission)).toEqual(passedSubmissionResult)
42
+ });
43
+ });
44
+
45
+ describe('submissionSolutionContent', () => {
46
+ it("works with programatic solutions", () => {
47
+ expect(mumuki.SubmissionsStore.submissionSolutionContent({solution: {content: 'foo'}})).toEqual('foo');
48
+ });
49
+
50
+ it("works with classic solutions", () => {
51
+ expect(mumuki.SubmissionsStore.submissionSolutionContent({'solution[content]': 'foo'})).toEqual('foo');
52
+ });
53
+
54
+ it("works with multifile solutions", () => {
55
+ expect(mumuki.SubmissionsStore.submissionSolutionContent({
56
+ 'solution[content[index.html]]': 'html foo',
57
+ 'solution[content[index.css]]': 'css foo'
58
+ })).toEqual('[["solution[content[index.html]]","html foo"],["solution[content[index.css]]","css foo"]]');
59
+ });
60
+ });
61
+
62
+ describe('submissionSolutionEquals', () => {
63
+ describe('programatic submissions', () => {
64
+ it("answers true when they are equal", () => {
65
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
66
+ {solution: {content: 'foo'}},
67
+ {solution: {content: 'foo'}})).toBe(true);
68
+ });
69
+
70
+ it("answers true when they are equal but empty", () => {
71
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
72
+ {solution: {content: ''}},
73
+ {solution: {content: ''}})).toBe(true);
74
+ });
75
+
76
+ it("answers true when they are equal and there are other spurious keys", () => {
77
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
78
+ {solution: {content: 'foo'}, utf8: "✓"},
79
+ {solution: {content: 'foo'}})).toBe(true);
80
+ });
81
+
82
+ it("answers false when they are not equal", () => {
83
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
84
+ {solution: {content: 'foo'}},
85
+ {solution: {content: 'bar'}})).toBe(false);
86
+ });
87
+
88
+ it("answers false when they are not equal but one of them is empty", () => {
89
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
90
+ {solution: {content: ''}},
91
+ {solution: {content: 'bar'}})).toBe(false);
92
+ });
93
+ })
94
+
95
+ describe('classic submissons', () => {
96
+ it("answers true when they are equal", () => {
97
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
98
+ {'solution[content]': 'foo'},
99
+ {'solution[content]': 'foo'})).toBe(true);
100
+ });
101
+
102
+ it("answers true when they are equal but empty", () => {
103
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
104
+ {'solution[content]': ''},
105
+ {'solution[content]': ''})).toBe(true);
106
+ });
107
+
108
+ it("answers true when they are equal with other spurious keys", () => {
109
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
110
+ {'solution[content]': 'foo'},
111
+ {'solution[content]': 'foo', utf8: "✓"})).toBe(true);
112
+ });
113
+
114
+ it("answers false when they are not equal", () => {
115
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
116
+ {'solution[content]': 'foo'},
117
+ {'solution[content]': 'bar'})).toBe(false);
118
+ });
119
+
120
+ it("answers false when they are not equal but one of them is empty", () => {
121
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
122
+ {'solution[content]': ''},
123
+ {'solution[content]': 'bar'})).toBe(false);
124
+ });
125
+ })
126
+
127
+ describe('multifile submissions', () => {
128
+ it("answers true when they are equal", () => {
129
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
130
+ {
131
+ 'solution[content[index.html]]': 'html foo',
132
+ 'solution[content[index.css]]': 'css foo'
133
+ },
134
+ {
135
+ 'solution[content[index.html]]': 'html foo',
136
+ 'solution[content[index.css]]': 'css foo'
137
+ })).toBe(true);
138
+ });
139
+
140
+ it("answers true when they are equal with spurious keys", () => {
141
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
142
+ {
143
+ 'multifile-locales': '{"insert_file_name":"Ingresa un nombre de archivo"}',
144
+ 'solution[content[index.html]]': 'html foo',
145
+ 'solution[content[index.css]]': 'css foo'
146
+ },
147
+ {
148
+ 'solution[content[index.html]]': 'html foo',
149
+ 'solution[content[index.css]]': 'css foo'
150
+ })).toBe(true);
151
+ });
152
+
153
+ it("answers false when they are not equal", () => {
154
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
155
+ {
156
+ 'solution[content[index.html]]': 'html foo',
157
+ 'solution[content[index.css]]': 'css foo'
158
+ },
159
+ {
160
+ 'solution[content[index.html]]': 'html foo',
161
+ 'solution[content[index.css]]': 'css bar'
162
+ })).toBe(false);
163
+ });
164
+
165
+ it("answers false when they are not equal and with different keys", () => {
166
+ expect(mumuki.SubmissionsStore.submissionSolutionEquals(
167
+ {
168
+ 'solution[content[index.html]]': 'html foo',
169
+ 'solution[content[index.css]]': 'css foo'
170
+ },
171
+ {
172
+ 'solution[content[index.html]]': 'html foo'
173
+ })).toBe(false);
174
+ });
42
175
  })
43
176
  });
44
177
  })
@@ -6,6 +6,7 @@ require 'rspec/rails'
6
6
  require 'codeclimate-test-reporter'
7
7
  require 'mumukit/core/rspec'
8
8
  require 'factory_bot_rails'
9
+ require 'webdrivers'
9
10
 
10
11
  require 'mumuki/domain/factories'
11
12
 
@@ -41,6 +42,7 @@ RSpec.configure do |config|
41
42
  set_subdomain_host! 'test'
42
43
  create(:public_organization,
43
44
  name: 'test',
45
+ immersible: true,
44
46
  book: create(:book, name: 'test', slug: 'mumuki/mumuki-the-book')).switch!
45
47
  elsif RSpec.current_example.metadata[:organization_workspace] == :base
46
48
  set_subdomain_host! 'base'
@@ -1,3 +1,6 @@
1
+ require 'selenium-webdriver'
2
+ require 'webdrivers'
3
+
1
4
  unless defined?(Rails)
2
5
  ENV["RAILS_ROOT"] = File.expand_path("../dummy", __FILE__)
3
6
  require File.expand_path("../dummy/config/environment", __FILE__)
@@ -108,12 +111,27 @@ Teaspoon.configure do |config|
108
111
  # Capybara Webkit: https://github.com/modeset/teaspoon/wiki/Using-Capybara-Webkit
109
112
  # config.driver = :capybara_webkit
110
113
  config.driver = :selenium
111
- config.driver_options = {
112
- client_driver: :firefox,
113
- selenium_options: {
114
- options: Selenium::WebDriver::Firefox::Options.new(log_level: :warn)
115
- }
116
- }
114
+ config.driver_options =
115
+ case ENV['MUMUKI_SELENIUM_DRIVER']
116
+ when 'chrome'
117
+ {
118
+ client_driver: :chrome,
119
+ selenium_options: {
120
+ options: Selenium::WebDriver::Chrome::Options.new(args: ['headless', 'disable-gpu'])
121
+ }
122
+ }
123
+ when 'safari'
124
+ {
125
+ client_driver: :safari,
126
+ }
127
+ else
128
+ {
129
+ client_driver: :firefox,
130
+ selenium_options: {
131
+ options: Selenium::WebDriver::Firefox::Options.new(log_level: :warn, args: ['-headless'])
132
+ }
133
+ }
134
+ end
117
135
 
118
136
  # Specify the timeout for the driver. Specs are expected to complete within this time frame or the run will be
119
137
  # considered a failure. This is to avoid issues that can arise where tests stall.
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: 7.10.3
4
+ version: 7.12.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: 2020-10-09 00:00:00.000000000 Z
11
+ date: 2020-11-05 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: 7.10.0
33
+ version: 7.12.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: 7.10.0
40
+ version: 7.12.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: 1.21.3
117
+ version: '1.22'
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: 1.21.3
124
+ version: '1.22'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: muvment
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -318,6 +318,20 @@ dependencies:
318
318
  - - "~>"
319
319
  - !ruby/object:Gem::Version
320
320
  version: '2.0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: webdrivers
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - "~>"
326
+ - !ruby/object:Gem::Version
327
+ version: '4.4'
328
+ type: :development
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - "~>"
333
+ - !ruby/object:Gem::Version
334
+ version: '4.4'
321
335
  description: Where students practice and receive automated and human feedback.
322
336
  email:
323
337
  - franco@mumuki.org
@@ -349,9 +363,11 @@ files:
349
363
  - app/assets/javascripts/mumuki_laboratory/application/events.js
350
364
  - app/assets/javascripts/mumuki_laboratory/application/exercise.js
351
365
  - app/assets/javascripts/mumuki_laboratory/application/free-form.js
366
+ - app/assets/javascripts/mumuki_laboratory/application/gamification.js
352
367
  - app/assets/javascripts/mumuki_laboratory/application/inputs.js
353
368
  - app/assets/javascripts/mumuki_laboratory/application/interval.js
354
369
  - app/assets/javascripts/mumuki_laboratory/application/kids.js
370
+ - app/assets/javascripts/mumuki_laboratory/application/kindergarten.js
355
371
  - app/assets/javascripts/mumuki_laboratory/application/load-analytics.js
356
372
  - app/assets/javascripts/mumuki_laboratory/application/load-error-svg.js
357
373
  - app/assets/javascripts/mumuki_laboratory/application/messages.js
@@ -386,9 +402,9 @@ files:
386
402
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_avatar.scss
387
403
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_book_header.scss
388
404
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_breadcrumb.scss
389
- - app/assets/stylesheets/mumuki_laboratory/application/modules/_chapter_show.scss
390
405
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_checkboxes.scss
391
406
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_console.scss
407
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_content_show.scss
392
408
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_datepicker.scss
393
409
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss
394
410
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_dropdown.scss
@@ -402,12 +418,14 @@ files:
402
418
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_kids.scss
403
419
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_kids_results.scss
404
420
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_kindergarten.scss
421
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_medal.scss
405
422
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_modal.scss
406
423
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_organization_chooser.scss
407
424
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_overlap.scss
408
425
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_popover.scss
409
426
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_bar.scss
410
427
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_progress_listing.scss
428
+ - app/assets/stylesheets/mumuki_laboratory/application/modules/_terms.scss
411
429
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_timer.scss
412
430
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_upload.scss
413
431
  - app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss
@@ -471,7 +489,9 @@ files:
471
489
  - app/helpers/exercise_input_helper.rb
472
490
  - app/helpers/globals_helper.rb
473
491
  - app/helpers/icons_helper.rb
492
+ - app/helpers/kindergarten_helper.rb
474
493
  - app/helpers/links_helper.rb
494
+ - app/helpers/medal_helper.rb
475
495
  - app/helpers/menu_bar_helper.rb
476
496
  - app/helpers/messages_helper.rb
477
497
  - app/helpers/multiple_file_editor_helper.rb
@@ -487,6 +507,7 @@ files:
487
507
  - app/mailers/application_mailer.rb
488
508
  - app/mailers/user_mailer.rb
489
509
  - app/views/appendixes/show.html.erb
510
+ - app/views/book/_header.html.erb
490
511
  - app/views/book/show.html.erb
491
512
  - app/views/book_discussions/index.html.erb
492
513
  - app/views/chapters/show.html.erb
@@ -498,6 +519,7 @@ files:
498
519
  - app/views/discussions/index.html.erb
499
520
  - app/views/discussions/new.html.erb
500
521
  - app/views/discussions/show.html.erb
522
+ - app/views/discussions/terms.html.erb
501
523
  - app/views/errors/forbidden.html.erb
502
524
  - app/views/errors/gone.html.erb
503
525
  - app/views/errors/internal_server_error.html.erb
@@ -526,6 +548,7 @@ files:
526
548
  - app/views/layouts/_exercise_skipped.html.erb
527
549
  - app/views/layouts/_guide.html.erb
528
550
  - app/views/layouts/_kids.html.erb
551
+ - app/views/layouts/_kindergarten.html.erb
529
552
  - app/views/layouts/_main.html.erb
530
553
  - app/views/layouts/_messages.html.erb
531
554
  - app/views/layouts/_mixed_results.erb
@@ -539,6 +562,7 @@ files:
539
562
  - app/views/layouts/_social_media.html.erb
540
563
  - app/views/layouts/_submission_result_error.html.erb
541
564
  - app/views/layouts/_submission_result_error_body.html.erb
565
+ - app/views/layouts/_terms_acceptance_disclaimer.html.erb
542
566
  - app/views/layouts/_test_results.html.erb
543
567
  - app/views/layouts/_timer.html.erb
544
568
  - app/views/layouts/application.html.erb
@@ -576,6 +600,9 @@ files:
576
600
  - app/views/layouts/modals/_kids_context.html.erb
577
601
  - app/views/layouts/modals/_kids_results.html.erb
578
602
  - app/views/layouts/modals/_kids_results_aborted.html.erb
603
+ - app/views/layouts/modals/_kindergarten_context.html.erb
604
+ - app/views/layouts/modals/_kindergarten_results.html.erb
605
+ - app/views/layouts/modals/_kindergarten_results_aborted.html.erb
579
606
  - app/views/layouts/modals/_new_message.html.erb
580
607
  - app/views/lessons/show.html.erb
581
608
  - app/views/messages/errors.html.erb
@@ -590,9 +617,11 @@ files:
590
617
  - app/views/users/_avatar_list.html.erb
591
618
  - app/views/users/_edit_user_form.html.erb
592
619
  - app/views/users/_profile_fields.html.erb
620
+ - app/views/users/_term.html.erb
593
621
  - app/views/users/_user_form.html.erb
594
622
  - app/views/users/edit.html.erb
595
623
  - app/views/users/show.html.erb
624
+ - app/views/users/terms.html.erb
596
625
  - config/i18n-tasks.yml
597
626
  - config/initializers/form_builder.rb
598
627
  - config/initializers/omniauth.rb
@@ -694,6 +723,7 @@ files:
694
723
  - spec/dummy/public/error/timeout_1.svg
695
724
  - spec/dummy/public/error/timeout_2.svg
696
725
  - spec/dummy/public/error/timeout_3.svg
726
+ - spec/dummy/public/medal/outline.svg
697
727
  - spec/evaluation_helper.rb
698
728
  - spec/features/chapter_spec.rb
699
729
  - spec/features/choose_organization_spec.rb
@@ -737,6 +767,7 @@ files:
737
767
  - spec/javascripts/elipsis-spec.js
738
768
  - spec/javascripts/events-spec.js
739
769
  - spec/javascripts/exercise-spec.js
770
+ - spec/javascripts/gamification-spec.js
740
771
  - spec/javascripts/global-spec.js
741
772
  - spec/javascripts/results-renderers-spec.js
742
773
  - spec/javascripts/spec-helper.js
@@ -851,6 +882,7 @@ test_files:
851
882
  - spec/dummy/bin/rails
852
883
  - spec/dummy/bin/setup
853
884
  - spec/dummy/public/character/animations.json
885
+ - spec/dummy/public/medal/outline.svg
854
886
  - spec/dummy/public/error/timeout_2.svg
855
887
  - spec/dummy/public/error/timeout_3.svg
856
888
  - spec/dummy/public/error/401.svg
@@ -900,6 +932,7 @@ test_files:
900
932
  - spec/javascripts/events-spec.js
901
933
  - spec/javascripts/exercise-spec.js
902
934
  - spec/javascripts/global-spec.js
935
+ - spec/javascripts/gamification-spec.js
903
936
  - spec/javascripts/speech-bubble-renderer-spec.js
904
937
  - spec/javascripts/timeout-spec.js
905
938
  - spec/javascripts/results-renderers-spec.js