mumuki-laboratory 9.21.0 → 9.22.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +1 -3
- data/app/helpers/discussions_helper.rb +39 -24
- data/app/views/discussions/_description_message.html.erb +6 -4
- data/app/views/discussions/_message.html.erb +10 -8
- data/app/views/discussions/show.html.erb +1 -1
- data/app/views/layouts/_discussions.html.erb +1 -3
- data/lib/mumuki/laboratory/version.rb +1 -1
- data/spec/controllers/discussions_messages_controller_spec.rb +5 -5
- data/spec/controllers/messages_controller_spec.rb +3 -3
- data/spec/dummy/db/schema.rb +2 -0
- data/spec/features/discussion_flow_spec.rb +2 -2
- data/spec/features/profile_flow_spec.rb +2 -0
- metadata +107 -107
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 132cadbd6244acaece507d8f75d1613daf1c4f9f682b1b929d5c6468102a596b
|
4
|
+
data.tar.gz: 45ce5c37552fe64a9766ac4548f944f045f843177b843706277ca56f42125dbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c6046c3ce7394386bc2f43d3e063c7eae999a70d96fde67243809e1e107d4f35638333cdf87e9af9aa5f3ae797585c82bd69a1ba293511842eb9bc4608c4518
|
7
|
+
data.tar.gz: fdeaa6997d54fb7dd6a75224c25a3a40f0d2e05414b934ff1fc3e5f60568c2de6ac32b39c6bcbb0f5b6e09cffc3b53b51e6cb8264e3ade7ee1060ccd05ae4252
|
@@ -318,7 +318,6 @@ $moderator-badge-color: #dd9900;
|
|
318
318
|
margin-bottom: 20px;
|
319
319
|
.discussion-message-bubble-header {
|
320
320
|
background-color: $mu-color-highlight-background;
|
321
|
-
height: 40px;
|
322
321
|
&:before {
|
323
322
|
position: absolute;
|
324
323
|
top: calc(20px - #{$discussion-message-arrow-size + 2px} / 2);
|
@@ -330,12 +329,11 @@ $moderator-badge-color: #dd9900;
|
|
330
329
|
}
|
331
330
|
.discussion-message-bubble-title {
|
332
331
|
padding: 5px 15px;
|
333
|
-
display:
|
332
|
+
display: flex;
|
334
333
|
.message-date {
|
335
334
|
font-size: 15px;
|
336
335
|
}
|
337
336
|
.actions {
|
338
|
-
float: right;
|
339
337
|
> a, .dropdown {
|
340
338
|
margin-left: 20px;
|
341
339
|
cursor: pointer;
|
@@ -53,37 +53,37 @@ module DiscussionsHelper
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def forum_terms_link
|
56
|
-
|
56
|
+
<<~HTML.html_safe
|
57
57
|
<span>
|
58
58
|
#{ t(:forum_terms_link, terms_link: link_to_forum_terms).html_safe }
|
59
59
|
</span>
|
60
|
-
|
60
|
+
HTML
|
61
61
|
end
|
62
62
|
|
63
63
|
def discussion_messages_count(discussion)
|
64
|
-
|
64
|
+
<<~HTML.html_safe
|
65
65
|
<span class="discussion-messages-count">
|
66
66
|
#{fa_icon :comments, type: :regular, text: discussion.messages_count}
|
67
67
|
</span>
|
68
|
-
|
68
|
+
HTML
|
69
69
|
end
|
70
70
|
|
71
71
|
def discussion_validated_messages_count(discussion)
|
72
|
-
|
72
|
+
<<~HTML.html_safe
|
73
73
|
<span class="discussion-validated-messages-count">
|
74
74
|
#{fa_icon :comment, type: :regular}#{fa_icon :check, text: discussion.validated_messages_count}
|
75
75
|
</span>
|
76
|
-
|
76
|
+
HTML
|
77
77
|
end
|
78
78
|
|
79
79
|
def discussion_upvotes_icon(discussion)
|
80
80
|
if discussion.upvotes_count > 0
|
81
|
-
|
81
|
+
<<~HTML.html_safe
|
82
82
|
<span class="discussion-icon fa-stack fa-xs">
|
83
83
|
<i class="far fa-star fa-stack-2x"></i>
|
84
84
|
<i class="fas fa-stack-1x">#{discussion.upvotes_count}</i>
|
85
85
|
</span>
|
86
|
-
|
86
|
+
HTML
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
@@ -99,16 +99,21 @@ module DiscussionsHelper
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def new_discussion_link(teaser_text, link_text)
|
102
|
-
|
102
|
+
<<~HTML.html_safe
|
103
103
|
<h4>
|
104
104
|
<span>#{t(teaser_text)}</span>
|
105
105
|
#{link_to t(link_text), new_exercise_discussion_path(@debatable, anchor: 'new-discussion-description-container') }
|
106
106
|
</h4>
|
107
|
-
|
107
|
+
HTML
|
108
108
|
end
|
109
109
|
|
110
|
-
def
|
111
|
-
discussions.scoped_query_by(discussion_filter_params, excluded_params: [:status], excluded_methods: [:page])
|
110
|
+
def discussion_status_counts(discussions)
|
111
|
+
discussions.scoped_query_by(discussion_filter_params, excluded_params: [:status], excluded_methods: [:page])
|
112
|
+
.group(:status)
|
113
|
+
.reorder('')
|
114
|
+
.pluck(:status, 'count(*)')
|
115
|
+
.to_h
|
116
|
+
.transform_keys(&:to_sym)
|
112
117
|
end
|
113
118
|
|
114
119
|
def discussions_reset_query_link
|
@@ -122,11 +127,21 @@ module DiscussionsHelper
|
|
122
127
|
#TODO: this one uses a long method chain in order to take advantage of eager load
|
123
128
|
# Delegate it once again when polymorphic association is removed
|
124
129
|
def discussions_languages(discussions)
|
125
|
-
@languages ||= discussions.
|
130
|
+
@languages ||= discussions.distinct
|
131
|
+
.joins(:exercise)
|
132
|
+
.pluck('languages.name')
|
126
133
|
end
|
127
134
|
|
128
|
-
def
|
129
|
-
|
135
|
+
def discussion_status_filter_links(discussions)
|
136
|
+
status_counts = discussion_status_counts(discussions)
|
137
|
+
|
138
|
+
discussions_statuses.map do |status|
|
139
|
+
discussion_status_filter_link(status, status_counts)
|
140
|
+
end.compact.join("\n").html_safe
|
141
|
+
end
|
142
|
+
|
143
|
+
def discussion_status_filter_link(status, status_counts)
|
144
|
+
discussions_count = status_counts[status.to_sym] || 0
|
130
145
|
if status.should_be_shown?(discussions_count, current_user)
|
131
146
|
discussion_filter_item(:status, status) do
|
132
147
|
discussion_status_filter(status, discussions_count)
|
@@ -135,17 +150,17 @@ module DiscussionsHelper
|
|
135
150
|
end
|
136
151
|
|
137
152
|
def discussion_status_filter(status, discussions_count)
|
138
|
-
|
139
|
-
|
153
|
+
<<~HTML.html_safe
|
154
|
+
#{discussion_status_fa_icon(status)}
|
140
155
|
<span>
|
141
156
|
#{t("#{status}_count", count: discussions_count)}
|
142
157
|
</span>
|
143
|
-
|
158
|
+
HTML
|
144
159
|
end
|
145
160
|
|
146
161
|
def discussion_dropdown_filter(label, filters, can_select_all = false, &block)
|
147
162
|
if filters.present?
|
148
|
-
|
163
|
+
<<~HTML.html_safe
|
149
164
|
<div class="dropdown discussions-toolbar-filter">
|
150
165
|
<a id="dropdown-#{label}" data-bs-toggle="dropdown" role="menu">
|
151
166
|
#{t label} #{fa_icon :'caret-down', class: 'fa-xs'}
|
@@ -155,7 +170,7 @@ module DiscussionsHelper
|
|
155
170
|
#{discussion_filter_list(label, filters, &block)}
|
156
171
|
</ul>
|
157
172
|
</div>
|
158
|
-
|
173
|
+
HTML
|
159
174
|
end
|
160
175
|
end
|
161
176
|
|
@@ -244,7 +259,7 @@ module DiscussionsHelper
|
|
244
259
|
end
|
245
260
|
|
246
261
|
def discussion_delete_message_dropdown(discussion, message)
|
247
|
-
|
262
|
+
<<~HTML.html_safe
|
248
263
|
<span class="dropdown">
|
249
264
|
#{content_tag :span, fa_icon('trash-alt', type: :regular, class: 'fa-lg'), role: 'menu', 'data-bs-toggle': 'dropdown',
|
250
265
|
class: 'discussion-delete-message', id: 'deleteDiscussionDropdown'}
|
@@ -254,17 +269,17 @@ module DiscussionsHelper
|
|
254
269
|
#{discussion_delete_message_option discussion, message, :discloses_personal_information, 'user-tag'}
|
255
270
|
</ul>
|
256
271
|
</span>
|
257
|
-
|
272
|
+
HTML
|
258
273
|
end
|
259
274
|
|
260
275
|
def discussion_delete_message_option(discussion, message, motive, icon)
|
261
|
-
|
276
|
+
<<~HTML.html_safe
|
262
277
|
<li>
|
263
278
|
#{link_to fa_icon(icon, text: t("deletion_motive.#{motive}.present"), class: 'fa-fw fixed-icon'),
|
264
279
|
discussion_message_path(discussion, message, motive: motive), method: :delete, class: 'dropdown-item',
|
265
280
|
role: 'menuitem', data: { confirm: t(:are_you_sure, action: t(:destroy_message)) } }
|
266
281
|
</li>
|
267
|
-
|
282
|
+
HTML
|
268
283
|
end
|
269
284
|
|
270
285
|
def message_deleted_text(message)
|
@@ -2,10 +2,12 @@
|
|
2
2
|
<div class="discussion-message-bubble">
|
3
3
|
<div class="discussion-message-bubble-header">
|
4
4
|
<div class="discussion-message-bubble-title">
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
<div class="flex-fill">
|
6
|
+
<%= linked_discussion_user_name(discussion.initiator) %>
|
7
|
+
<span class="message-date">
|
8
|
+
<%= friendly_time(discussion.created_at, :time_since) %>
|
9
|
+
</span>
|
10
|
+
</div>
|
9
11
|
</div>
|
10
12
|
</div>
|
11
13
|
<div class="discussion-message-bubble-content">
|
@@ -2,14 +2,16 @@
|
|
2
2
|
<div class="discussion-message-bubble">
|
3
3
|
<div class="discussion-message-bubble-header">
|
4
4
|
<div class="discussion-message-bubble-title">
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
<div class="flex-fill">
|
6
|
+
<%= linked_discussion_user_name user %>
|
7
|
+
<% if message.from_moderator? %>
|
8
|
+
<span class="moderator-badge"><%= t(:moderation) %></span>
|
9
|
+
<% end %>
|
10
|
+
<span class="message-date">
|
11
|
+
<%= friendly_time(message.created_at, :time_since) %>
|
12
|
+
</span>
|
13
|
+
</div>
|
14
|
+
<span class="actions flex-shrink-0">
|
13
15
|
<% if message.authorized?(current_user) && !message.deleted? %>
|
14
16
|
<% if current_user&.moderator_here? %>
|
15
17
|
<a class="discussion-message-approved <%= 'selected' if message.approved? %>"
|
@@ -26,7 +26,7 @@
|
|
26
26
|
<%= render partial: 'discussions/description_message', locals: { discussion: @discussion } %>
|
27
27
|
<% end %>
|
28
28
|
<% @discussion.visible_messages.each do |message| %>
|
29
|
-
<%= render partial: 'discussions/message', locals: { user: message.
|
29
|
+
<%= render partial: 'discussions/message', locals: { user: message.sender, message: message } %>
|
30
30
|
<% end %>
|
31
31
|
<% if @discussion.commentable_by?(current_user) %>
|
32
32
|
<hr class="message-divider">
|
@@ -3,9 +3,7 @@
|
|
3
3
|
<div class="discussions-toolbar">
|
4
4
|
<div class="discussions-toolbar-status">
|
5
5
|
<div class="d-none d-lg-block">
|
6
|
-
|
7
|
-
<%= discussion_status_filter_link(status, @discussions) %>
|
8
|
-
<% end %>
|
6
|
+
<%= discussion_status_filter_links(@discussions) %>
|
9
7
|
</div>
|
10
8
|
</div>
|
11
9
|
<div>
|
@@ -32,7 +32,7 @@ describe DiscussionsMessagesController, type: :controller, organization_workspac
|
|
32
32
|
end
|
33
33
|
|
34
34
|
describe 'delete' do
|
35
|
-
let(:message) { create(:message, discussion: discussion, sender: student
|
35
|
+
let(:message) { create(:message, discussion: discussion, sender: student) }
|
36
36
|
|
37
37
|
describe 'for student' do
|
38
38
|
before { set_current_user! student }
|
@@ -64,7 +64,7 @@ describe DiscussionsMessagesController, type: :controller, organization_workspac
|
|
64
64
|
end
|
65
65
|
|
66
66
|
describe 'someone else\'s message' do
|
67
|
-
let(:message) { create(:message, discussion: discussion, sender: moderator
|
67
|
+
let(:message) { create(:message, discussion: discussion, sender: moderator) }
|
68
68
|
before do
|
69
69
|
delete :destroy, params: {id: message.id, discussion_id: discussion.id, motive: :self_deleted}
|
70
70
|
message.reload
|
@@ -94,7 +94,7 @@ describe DiscussionsMessagesController, type: :controller, organization_workspac
|
|
94
94
|
end
|
95
95
|
|
96
96
|
describe 'approve' do
|
97
|
-
let(:message) { create(:message, discussion: discussion, sender: student
|
97
|
+
let(:message) { create(:message, discussion: discussion, sender: student) }
|
98
98
|
|
99
99
|
describe 'for student' do
|
100
100
|
before { set_current_user! student }
|
@@ -114,7 +114,7 @@ describe DiscussionsMessagesController, type: :controller, organization_workspac
|
|
114
114
|
end
|
115
115
|
|
116
116
|
describe 'question' do
|
117
|
-
let(:message) { create(:message, discussion: discussion, sender: student
|
117
|
+
let(:message) { create(:message, discussion: discussion, sender: student) }
|
118
118
|
|
119
119
|
describe 'for student' do
|
120
120
|
before { set_current_user! student }
|
@@ -133,7 +133,7 @@ describe DiscussionsMessagesController, type: :controller, organization_workspac
|
|
133
133
|
end
|
134
134
|
|
135
135
|
describe 'preview' do
|
136
|
-
let(:message) { create(:message, content: 'Message in **bold** and _italics_', discussion: discussion, sender: student
|
136
|
+
let(:message) { create(:message, content: 'Message in **bold** and _italics_', discussion: discussion, sender: student) }
|
137
137
|
|
138
138
|
describe 'for student' do
|
139
139
|
before { set_current_user! student }
|
@@ -11,10 +11,10 @@ describe MessagesController, organization_workspace: :test do
|
|
11
11
|
|
12
12
|
it { expect(response.status).to eq 302 }
|
13
13
|
it { expect(user.assignments.size).to eq 1 }
|
14
|
-
it { expect(user.
|
14
|
+
it { expect(user.direct_messages.size).to eq 1 }
|
15
15
|
|
16
16
|
describe 'deleting exercises does delete all messages' do
|
17
|
-
before { @message_id = user.
|
17
|
+
before { @message_id = user.direct_messages.first.id }
|
18
18
|
before { exercise.destroy }
|
19
19
|
|
20
20
|
it { expect { Message.find(@message_id) }.to raise_exception(ActiveRecord::RecordNotFound) }
|
@@ -27,6 +27,6 @@ describe MessagesController, organization_workspace: :test do
|
|
27
27
|
|
28
28
|
it { expect(response.status).to eq 302 }
|
29
29
|
it { expect(user.assignments.size).to eq 1 }
|
30
|
-
it { expect(user.
|
30
|
+
it { expect(user.direct_messages.size).to eq 1 }
|
31
31
|
end
|
32
32
|
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -387,10 +387,12 @@ ActiveRecord::Schema.define(version: 20211020224011) do
|
|
387
387
|
t.datetime "deleted_at"
|
388
388
|
t.bigint "deleted_by_id"
|
389
389
|
t.bigint "assignment_id"
|
390
|
+
t.bigint "sender_id"
|
390
391
|
t.boolean "from_moderator"
|
391
392
|
t.index ["approved_by_id"], name: "index_messages_on_approved_by_id"
|
392
393
|
t.index ["assignment_id"], name: "index_messages_on_assignment_id"
|
393
394
|
t.index ["deleted_by_id"], name: "index_messages_on_deleted_by_id"
|
395
|
+
t.index ["sender_id"], name: "index_messages_on_sender_id"
|
394
396
|
end
|
395
397
|
|
396
398
|
create_table "notifications", force: :cascade do |t|
|
@@ -162,8 +162,8 @@ feature 'Discussion Flow', organization_workspace: :test do
|
|
162
162
|
end
|
163
163
|
|
164
164
|
context 'and forum enabled' do
|
165
|
-
let!(:problem_2_discussion_message) { create(:message, discussion: problem_2_discussions.first, sender: another_student
|
166
|
-
let!(:another_problem_2_discussion_message) { create(:message, discussion: problem_2_discussions.first, sender: another_student
|
165
|
+
let!(:problem_2_discussion_message) { create(:message, discussion: problem_2_discussions.first, sender: another_student) }
|
166
|
+
let!(:another_problem_2_discussion_message) { create(:message, discussion: problem_2_discussions.first, sender: another_student) }
|
167
167
|
before do
|
168
168
|
Organization.current.update! forum_enabled: true
|
169
169
|
another_problem_2_discussion_message.soft_delete! :inappropriate_content, moderator
|
@@ -104,6 +104,8 @@ feature 'Profile Flow', organization_workspace: :test do
|
|
104
104
|
end
|
105
105
|
|
106
106
|
context 'with messages' do
|
107
|
+
before { create :user, uid: 'test-email@gmail.com' }
|
108
|
+
|
107
109
|
scenario 'visit messages' do
|
108
110
|
Organization.find_by_name('test').switch!
|
109
111
|
problem.submit_solution! user, {content: 'something'}
|
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.
|
4
|
+
version: 9.22.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-
|
11
|
+
date: 2021-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 9.
|
33
|
+
version: 9.22.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.
|
40
|
+
version: 9.22.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mumukit-bridge
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -984,136 +984,136 @@ signing_key:
|
|
984
984
|
specification_version: 4
|
985
985
|
summary: Code assement web application for the Mumuki Platform.
|
986
986
|
test_files:
|
987
|
-
- spec/
|
988
|
-
- spec/spec_helper.rb
|
989
|
-
- spec/capybara_helper.rb
|
990
|
-
- spec/login_helper.rb
|
991
|
-
- spec/javascripts/events-spec.js
|
992
|
-
- spec/javascripts/i18n-spec.js
|
993
|
-
- spec/javascripts/bridge-spec.js
|
994
|
-
- spec/javascripts/kids-button-spec.js
|
995
|
-
- spec/javascripts/gamification-spec.js
|
996
|
-
- spec/javascripts/timer-spec.js
|
997
|
-
- spec/javascripts/speech-bubble-renderer-spec.js
|
998
|
-
- spec/javascripts/results-renderers-spec.js
|
999
|
-
- spec/javascripts/upload-spec.js
|
1000
|
-
- spec/javascripts/sync-mode-spec.js
|
1001
|
-
- spec/javascripts/submissions-store-spec.js
|
1002
|
-
- spec/javascripts/elipsis-spec.js
|
1003
|
-
- spec/javascripts/exercise-spec.js
|
1004
|
-
- spec/javascripts/csrf-token-spec.js
|
1005
|
-
- spec/javascripts/editors-spec.js
|
1006
|
-
- spec/javascripts/timeout-spec.js
|
1007
|
-
- spec/javascripts/global-spec.js
|
1008
|
-
- spec/javascripts/spec-helper.js
|
1009
|
-
- spec/helpers/avatar_helper_spec.rb
|
1010
|
-
- spec/helpers/email_helper_spec.rb
|
1011
|
-
- spec/helpers/certificate_helper_spec.rb
|
1012
|
-
- spec/helpers/authors_helper_spec.rb
|
987
|
+
- spec/helpers/user_activity_helper_spec.rb
|
1013
988
|
- spec/helpers/page_title_helper_spec.rb
|
1014
|
-
- spec/helpers/
|
1015
|
-
- spec/helpers/with_navigation_spec.rb
|
989
|
+
- spec/helpers/authors_helper_spec.rb
|
1016
990
|
- spec/helpers/with_choices_spec.rb
|
1017
|
-
- spec/helpers/breadcrumbs_helper_spec.rb
|
1018
991
|
- spec/helpers/icons_helper_spec.rb
|
1019
|
-
- spec/helpers/
|
992
|
+
- spec/helpers/email_helper_spec.rb
|
993
|
+
- spec/helpers/breadcrumbs_helper_spec.rb
|
1020
994
|
- spec/helpers/test_results_rendering_spec.rb
|
995
|
+
- spec/helpers/certificate_helper_spec.rb
|
996
|
+
- spec/helpers/with_navigation_spec.rb
|
1021
997
|
- spec/helpers/application_helper_spec.rb
|
1022
|
-
- spec/
|
1023
|
-
- spec/
|
1024
|
-
- spec/
|
1025
|
-
- spec/dummy/
|
1026
|
-
- spec/dummy/
|
1027
|
-
- spec/dummy/
|
1028
|
-
- spec/dummy/
|
1029
|
-
- spec/dummy/
|
1030
|
-
- spec/dummy/
|
998
|
+
- spec/helpers/exercise_input_helper_spec.rb
|
999
|
+
- spec/helpers/avatar_helper_spec.rb
|
1000
|
+
- spec/api_helper.rb
|
1001
|
+
- spec/dummy/config.ru
|
1002
|
+
- spec/dummy/bin/setup
|
1003
|
+
- spec/dummy/bin/bundle
|
1004
|
+
- spec/dummy/bin/rake
|
1005
|
+
- spec/dummy/bin/yarn
|
1006
|
+
- spec/dummy/bin/update
|
1007
|
+
- spec/dummy/bin/rails
|
1008
|
+
- spec/dummy/Rakefile
|
1009
|
+
- spec/dummy/db/schema.rb
|
1010
|
+
- spec/dummy/db/seeds.rb
|
1011
|
+
- spec/dummy/public/medal/outline.svg
|
1031
1012
|
- spec/dummy/public/character/kibi/passed_with_warnings.svg
|
1032
1013
|
- spec/dummy/public/character/kibi/success_l.svg
|
1014
|
+
- spec/dummy/public/character/kibi/jump.svg
|
1015
|
+
- spec/dummy/public/character/kibi/context.svg
|
1033
1016
|
- spec/dummy/public/character/kibi/failure.svg
|
1034
1017
|
- spec/dummy/public/character/kibi/success2_l.svg
|
1035
|
-
- spec/dummy/public/character/
|
1018
|
+
- spec/dummy/public/character/animations.json
|
1036
1019
|
- spec/dummy/public/character/magnifying_glass/loop.svg
|
1037
1020
|
- spec/dummy/public/character/magnifying_glass/apparition.svg
|
1038
|
-
- spec/dummy/public/
|
1039
|
-
- spec/dummy/public/
|
1040
|
-
- spec/dummy/
|
1041
|
-
- spec/dummy/
|
1042
|
-
- spec/dummy/
|
1021
|
+
- spec/dummy/public/error/403.svg
|
1022
|
+
- spec/dummy/public/error/404.svg
|
1023
|
+
- spec/dummy/public/error/timeout_1.svg
|
1024
|
+
- spec/dummy/public/error/410.svg
|
1025
|
+
- spec/dummy/public/error/401.svg
|
1026
|
+
- spec/dummy/public/error/timeout_2.svg
|
1027
|
+
- spec/dummy/public/error/500.svg
|
1028
|
+
- spec/dummy/public/error/timeout_3.svg
|
1029
|
+
- spec/dummy/package.json
|
1043
1030
|
- spec/dummy/config/spring.rb
|
1044
|
-
- spec/dummy/config/
|
1031
|
+
- spec/dummy/config/puma.rb
|
1045
1032
|
- spec/dummy/config/cable.yml
|
1046
|
-
- spec/dummy/config/
|
1033
|
+
- spec/dummy/config/secrets.yml
|
1034
|
+
- spec/dummy/config/environments/test.rb
|
1035
|
+
- spec/dummy/config/environments/development.rb
|
1047
1036
|
- spec/dummy/config/boot.rb
|
1048
|
-
- spec/dummy/config/
|
1037
|
+
- spec/dummy/config/routes.rb
|
1038
|
+
- spec/dummy/config/locales/en.yml
|
1039
|
+
- spec/dummy/config/application.rb
|
1040
|
+
- spec/dummy/config/rabbit.yml
|
1041
|
+
- spec/dummy/config/database.yml
|
1042
|
+
- spec/dummy/config/environment.rb
|
1049
1043
|
- spec/dummy/config/initializers/cookies_serializer.rb
|
1050
|
-
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
1051
|
-
- spec/dummy/config/initializers/assets.rb
|
1052
1044
|
- spec/dummy/config/initializers/wrap_parameters.rb
|
1053
|
-
- spec/dummy/config/
|
1054
|
-
- spec/dummy/config/
|
1055
|
-
- spec/dummy/config/environments/test.rb
|
1056
|
-
- spec/dummy/config/secrets.yml
|
1057
|
-
- spec/dummy/config/locales/en.yml
|
1058
|
-
- spec/dummy/bin/rails
|
1059
|
-
- spec/dummy/bin/yarn
|
1060
|
-
- spec/dummy/bin/rake
|
1061
|
-
- spec/dummy/bin/setup
|
1062
|
-
- spec/dummy/bin/update
|
1063
|
-
- spec/dummy/bin/bundle
|
1064
|
-
- spec/dummy/package.json
|
1065
|
-
- spec/dummy/db/schema.rb
|
1066
|
-
- spec/dummy/db/seeds.rb
|
1067
|
-
- spec/dummy/config.ru
|
1068
|
-
- spec/controllers/discussions_controller_spec.rb
|
1069
|
-
- spec/controllers/api_clients_controller.rb
|
1070
|
-
- spec/controllers/messages_controller_spec.rb
|
1071
|
-
- spec/controllers/confirmations_controller_spec.rb
|
1072
|
-
- spec/controllers/invitations_controller_spec.rb
|
1073
|
-
- spec/controllers/users_controller_spec.rb
|
1074
|
-
- spec/controllers/courses_api_controller_spec.rb
|
1075
|
-
- spec/controllers/students_api_controller_spec.rb
|
1076
|
-
- spec/controllers/guide_progress_controller_spec.rb
|
1077
|
-
- spec/controllers/chapters_controller_spec.rb
|
1078
|
-
- spec/controllers/exercise_solutions_controller_spec.rb
|
1079
|
-
- spec/controllers/exercises_controller_spec.rb
|
1080
|
-
- spec/controllers/discussions_messages_controller_spec.rb
|
1081
|
-
- spec/controllers/organizations_api_controller_spec.rb
|
1082
|
-
- spec/controllers/exam_registrations_controller_spec.rb
|
1083
|
-
- spec/controllers/certificates_controller_spec.rb
|
1084
|
-
- spec/controllers/exam_authorization_requests_controller_spec.rb
|
1085
|
-
- spec/controllers/users_api_controller_spec.rb
|
1086
|
-
- spec/api_helper.rb
|
1045
|
+
- spec/dummy/config/initializers/assets.rb
|
1046
|
+
- spec/dummy/config/initializers/filter_parameter_logging.rb
|
1087
1047
|
- spec/mailers/previews/user_mailer_preview.rb
|
1088
1048
|
- spec/mailers/user_mailer_spec.rb
|
1089
|
-
- spec/
|
1090
|
-
- spec/
|
1091
|
-
- spec/
|
1049
|
+
- spec/javascripts/events-spec.js
|
1050
|
+
- spec/javascripts/timeout-spec.js
|
1051
|
+
- spec/javascripts/speech-bubble-renderer-spec.js
|
1052
|
+
- spec/javascripts/elipsis-spec.js
|
1053
|
+
- spec/javascripts/gamification-spec.js
|
1054
|
+
- spec/javascripts/kids-button-spec.js
|
1055
|
+
- spec/javascripts/exercise-spec.js
|
1056
|
+
- spec/javascripts/global-spec.js
|
1057
|
+
- spec/javascripts/sync-mode-spec.js
|
1058
|
+
- spec/javascripts/submissions-store-spec.js
|
1059
|
+
- spec/javascripts/timer-spec.js
|
1060
|
+
- spec/javascripts/results-renderers-spec.js
|
1061
|
+
- spec/javascripts/upload-spec.js
|
1062
|
+
- spec/javascripts/csrf-token-spec.js
|
1063
|
+
- spec/javascripts/spec-helper.js
|
1064
|
+
- spec/javascripts/i18n-spec.js
|
1065
|
+
- spec/javascripts/bridge-spec.js
|
1066
|
+
- spec/javascripts/editors-spec.js
|
1067
|
+
- spec/features/user_activity_flow_spec.rb
|
1068
|
+
- spec/features/standard_flow_spec.rb
|
1069
|
+
- spec/features/chapters_flow_spec.rb
|
1070
|
+
- spec/features/profile_flow_spec.rb
|
1092
1071
|
- spec/features/dynamic_exam_spec.rb
|
1072
|
+
- spec/features/disable_user_flow_spec.rb
|
1093
1073
|
- spec/features/immersive_redirection_spec.rb
|
1074
|
+
- spec/features/disabled_organization_flow_spec.rb
|
1094
1075
|
- spec/features/invitations_flow_spec.rb
|
1095
|
-
- spec/features/chapters_flow_spec.rb
|
1096
|
-
- spec/features/read_only_flow_spec.rb
|
1097
1076
|
- spec/features/home_public_flow_spec.rb
|
1098
|
-
- spec/features/
|
1099
|
-
- spec/features/
|
1100
|
-
- spec/features/
|
1101
|
-
- spec/features/
|
1102
|
-
- spec/features/
|
1077
|
+
- spec/features/notifications_flow_spec.rb
|
1078
|
+
- spec/features/menu_bar_spec.rb
|
1079
|
+
- spec/features/login_flow_spec.rb
|
1080
|
+
- spec/features/certificate_programs_flow_spec.rb
|
1081
|
+
- spec/features/complements_flow_spec.rb
|
1103
1082
|
- spec/features/home_private_flow_spec.rb
|
1083
|
+
- spec/features/guide_reset_spec.rb
|
1084
|
+
- spec/features/terms_flow_spec.rb
|
1104
1085
|
- spec/features/progressive_tips_spec.rb
|
1105
1086
|
- spec/features/not_found_private_flow_spec.rb
|
1106
|
-
- spec/features/exercise_flow_spec.rb
|
1107
|
-
- spec/features/profile_flow_spec.rb
|
1108
|
-
- spec/features/certificate_programs_flow_spec.rb
|
1109
|
-
- spec/features/guide_reset_spec.rb
|
1110
1087
|
- spec/features/topic_flow_spec.rb
|
1111
|
-
- spec/features/not_found_public_flow_spec.rb
|
1112
|
-
- spec/features/disable_user_flow_spec.rb
|
1113
1088
|
- spec/features/lessons_flow_spec.rb
|
1114
|
-
- spec/features/
|
1115
|
-
- spec/features/
|
1089
|
+
- spec/features/read_only_flow_spec.rb
|
1090
|
+
- spec/features/guides_flow_spec.rb
|
1091
|
+
- spec/features/not_found_public_flow_spec.rb
|
1092
|
+
- spec/features/exercise_flow_spec.rb
|
1093
|
+
- spec/features/links_flow_spec.rb
|
1094
|
+
- spec/features/runner_assets_spec.rb
|
1116
1095
|
- spec/features/discussion_flow_spec.rb
|
1117
1096
|
- spec/features/exams_flow_spec.rb
|
1118
|
-
- spec/
|
1097
|
+
- spec/login_helper.rb
|
1119
1098
|
- spec/teaspoon_env.rb
|
1099
|
+
- spec/evaluation_helper.rb
|
1100
|
+
- spec/spec_helper.rb
|
1101
|
+
- spec/controllers/exercises_controller_spec.rb
|
1102
|
+
- spec/controllers/discussions_controller_spec.rb
|
1103
|
+
- spec/controllers/guide_progress_controller_spec.rb
|
1104
|
+
- spec/controllers/exam_authorization_requests_controller_spec.rb
|
1105
|
+
- spec/controllers/students_api_controller_spec.rb
|
1106
|
+
- spec/controllers/discussions_messages_controller_spec.rb
|
1107
|
+
- spec/controllers/users_controller_spec.rb
|
1108
|
+
- spec/controllers/organizations_api_controller_spec.rb
|
1109
|
+
- spec/controllers/certificates_controller_spec.rb
|
1110
|
+
- spec/controllers/users_api_controller_spec.rb
|
1111
|
+
- spec/controllers/messages_controller_spec.rb
|
1112
|
+
- spec/controllers/api_clients_controller.rb
|
1113
|
+
- spec/controllers/confirmations_controller_spec.rb
|
1114
|
+
- spec/controllers/exercise_solutions_controller_spec.rb
|
1115
|
+
- spec/controllers/courses_api_controller_spec.rb
|
1116
|
+
- spec/controllers/invitations_controller_spec.rb
|
1117
|
+
- spec/controllers/chapters_controller_spec.rb
|
1118
|
+
- spec/controllers/exam_registrations_controller_spec.rb
|
1119
|
+
- spec/capybara_helper.rb
|