mumuki-laboratory 9.21.0 → 9.22.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.
- 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
|