Rename user to contributor in submission
This commit is contained in:

committed by
Sebastian Serth

parent
97138288f4
commit
0234414bae
@ -7,7 +7,7 @@ describe Exercise do
|
||||
let(:users) { create_list(:external_user, 10) }
|
||||
|
||||
def create_submissions
|
||||
create_list(:submission, 10, cause: 'submit', exercise:, score: Forgery(:basic).number, user: users.sample)
|
||||
create_list(:submission, 10, cause: 'submit', exercise:, score: Forgery(:basic).number, contributor: users.sample)
|
||||
end
|
||||
|
||||
it 'validates the number of main files' do
|
||||
@ -77,7 +77,10 @@ describe Exercise do
|
||||
before { create_submissions }
|
||||
|
||||
it 'returns the average score expressed as a percentage' do
|
||||
maximum_percentages = exercise.submissions.group_by(&:user_id).values.map {|submission| submission.max_by(&:score).score / exercise.maximum_score * 100 }
|
||||
maximum_percentages = exercise.submissions.group_by do |s|
|
||||
[s.contributor_type,
|
||||
s.contributor_id]
|
||||
end.values.map {|submission| submission.max_by(&:score).score / exercise.maximum_score * 100 }
|
||||
expect(exercise.average_percentage).to eq(maximum_percentages.average.round(2))
|
||||
end
|
||||
end
|
||||
@ -96,7 +99,10 @@ describe Exercise do
|
||||
before { create_submissions }
|
||||
|
||||
it "returns the average of all users' maximum scores" do
|
||||
maximum_scores = exercise.submissions.group_by(&:user_id).values.map {|submission| submission.max_by(&:score).score }
|
||||
maximum_scores = exercise.submissions.group_by do |s|
|
||||
[s.contributor_type,
|
||||
s.contributor_id]
|
||||
end.values.map {|submission| submission.max_by(&:score).score }
|
||||
expect(exercise.average_score).to be_within(0.1).of(maximum_scores.average)
|
||||
end
|
||||
end
|
||||
|
@ -13,8 +13,8 @@ describe Submission do
|
||||
expect(described_class.create.errors[:exercise]).to be_present
|
||||
end
|
||||
|
||||
it 'validates the presence of a user' do
|
||||
expect(described_class.create.errors[:user]).to be_present
|
||||
it 'validates the presence of a contributor' do
|
||||
expect(described_class.create.errors[:contributor]).to be_present
|
||||
end
|
||||
|
||||
describe '#main_file' do
|
||||
@ -67,19 +67,19 @@ describe Submission do
|
||||
end
|
||||
|
||||
describe '#siblings' do
|
||||
let(:siblings) { described_class.find_by(user:).siblings }
|
||||
let(:user) { create(:external_user) }
|
||||
let(:siblings) { described_class.find_by(contributor:).siblings }
|
||||
let(:contributor) { create(:external_user) }
|
||||
|
||||
before do
|
||||
10.times.each_with_index do |_, index|
|
||||
create(:submission, exercise: submission.exercise, user: (index.even? ? user : create(:external_user)))
|
||||
create(:submission, exercise: submission.exercise, contributor: (index.even? ? contributor : create(:external_user)))
|
||||
end
|
||||
end
|
||||
|
||||
it "returns all the creator's submissions for the same exercise" do
|
||||
expect(siblings).to be_an(ActiveRecord::Relation)
|
||||
expect(siblings.map(&:exercise).uniq).to eq([submission.exercise])
|
||||
expect(siblings.map(&:user).uniq).to eq([user])
|
||||
expect(siblings.map(&:contributor).uniq).to eq([contributor])
|
||||
end
|
||||
end
|
||||
|
||||
@ -92,8 +92,8 @@ describe Submission do
|
||||
describe '#redirect_to_feedback?' do
|
||||
context 'with no exercise feedback' do
|
||||
let(:exercise) { create(:dummy) }
|
||||
let(:user) { build(:external_user, id: (11 - (exercise.created_at.to_i % 10)) % 10) }
|
||||
let(:submission) { build(:submission, exercise:, user:) }
|
||||
let(:contributor) { build(:external_user, id: (11 - (exercise.created_at.to_i % 10)) % 10) }
|
||||
let(:submission) { build(:submission, exercise:, contributor:) }
|
||||
|
||||
it 'sends 10% of users to feedback page' do
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_truthy
|
||||
@ -101,7 +101,7 @@ describe Submission do
|
||||
|
||||
it 'does not redirect other users' do
|
||||
9.times do |i|
|
||||
submission = build(:submission, exercise:, user: build(:external_user, id: (11 - (exercise.created_at.to_i % 10)) - i - 1))
|
||||
submission = build(:submission, exercise:, contributor: build(:external_user, id: (11 - (exercise.created_at.to_i % 10)) - i - 1))
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_falsey
|
||||
end
|
||||
end
|
||||
@ -109,8 +109,8 @@ describe Submission do
|
||||
|
||||
context 'with little exercise feedback' do
|
||||
let(:exercise) { create(:dummy_with_user_feedbacks) }
|
||||
let(:user) { build(:external_user, id: (11 - (exercise.created_at.to_i % 10)) % 10) }
|
||||
let(:submission) { build(:submission, exercise:, user:) }
|
||||
let(:contributor) { build(:external_user, id: (11 - (exercise.created_at.to_i % 10)) % 10) }
|
||||
let(:submission) { build(:submission, exercise:, contributor:) }
|
||||
|
||||
it 'sends 10% of users to feedback page' do
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_truthy
|
||||
@ -118,7 +118,7 @@ describe Submission do
|
||||
|
||||
it 'does not redirect other users' do
|
||||
9.times do |i|
|
||||
submission = build(:submission, exercise:, user: build(:external_user, id: (11 - (exercise.created_at.to_i % 10)) - i - 1))
|
||||
submission = build(:submission, exercise:, contributor: build(:external_user, id: (11 - (exercise.created_at.to_i % 10)) - i - 1))
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_falsey
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user