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

committed by
Sebastian Serth

parent
97138288f4
commit
0234414bae
@ -25,7 +25,7 @@ describe FileParameters do
|
||||
|
||||
it 'new file' do
|
||||
submission = create(:submission, exercise: hello_world, id: 1337)
|
||||
controller.instance_variable_set(:@current_user, submission.user)
|
||||
controller.instance_variable_set(:@current_user, submission.contributor)
|
||||
|
||||
new_file = create(:file, context: submission)
|
||||
expect(file_accepted?(new_file)).to be true
|
||||
@ -58,8 +58,8 @@ describe FileParameters do
|
||||
it 'file of another submission' do
|
||||
learner1 = create(:learner)
|
||||
learner2 = create(:learner)
|
||||
submission_learner1 = create(:submission, exercise: hello_world, user: learner1)
|
||||
_submission_learner2 = create(:submission, exercise: hello_world, user: learner2)
|
||||
submission_learner1 = create(:submission, exercise: hello_world, contributor: learner1)
|
||||
_submission_learner2 = create(:submission, exercise: hello_world, contributor: learner2)
|
||||
|
||||
controller.instance_variable_set(:@current_user, learner2)
|
||||
other_submissions_file = create(:file, context: submission_learner1)
|
||||
|
@ -107,7 +107,7 @@ describe Lti do
|
||||
let(:submission) { create(:submission) }
|
||||
|
||||
before do
|
||||
create(:lti_parameter, consumers_id: consumer.id, external_users_id: submission.user_id, exercises_id: submission.exercise_id)
|
||||
create(:lti_parameter, consumers_id: consumer.id, external_users_id: submission.contributor_id, exercises_id: submission.exercise_id)
|
||||
end
|
||||
|
||||
context 'with an invalid score' do
|
||||
@ -156,7 +156,7 @@ describe Lti do
|
||||
|
||||
context 'without a tool consumer' do
|
||||
it 'returns a corresponding status' do
|
||||
submission.user.consumer = nil
|
||||
submission.contributor.consumer = nil
|
||||
|
||||
allow(submission).to receive(:normalized_score).and_return score
|
||||
expect(controller.send(:send_score, submission)[:status]).to eq('error')
|
||||
|
@ -5,9 +5,9 @@ require 'rails_helper'
|
||||
describe CodeOcean::FilesController do
|
||||
render_views
|
||||
|
||||
let(:user) { create(:admin) }
|
||||
let(:contributor) { create(:admin) }
|
||||
|
||||
before { allow(controller).to receive(:current_user).and_return(user) }
|
||||
before { allow(controller).to receive(:current_user).and_return(contributor) }
|
||||
|
||||
describe 'GET #show_protected_upload' do
|
||||
context 'with a valid filename' do
|
||||
@ -30,7 +30,7 @@ describe CodeOcean::FilesController do
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
let(:submission) { create(:submission, user:) }
|
||||
let(:submission) { create(:submission, contributor:) }
|
||||
|
||||
context 'with a valid file' do
|
||||
let(:perform_request) { proc { post :create, params: {code_ocean_file: build(:file, context: submission).attributes, format: :json} } }
|
||||
|
@ -164,7 +164,7 @@ describe ExercisesController do
|
||||
expect_assigns(exercise: :exercise)
|
||||
|
||||
context 'with an existing submission' do
|
||||
let!(:submission) { create(:submission, exercise_id: exercise.id, user_id: user.id, user_type: user.class.name) }
|
||||
let!(:submission) { create(:submission, exercise:, contributor: user) }
|
||||
|
||||
it "populates the editors with the submission's files' content" do
|
||||
perform_request.call
|
||||
@ -260,18 +260,18 @@ describe ExercisesController do
|
||||
let(:external_user) { create(:external_user) }
|
||||
|
||||
before do
|
||||
2.times { create(:submission, cause: 'autosave', user: external_user, exercise:) }
|
||||
2.times { create(:submission, cause: 'run', user: external_user, exercise:) }
|
||||
create(:submission, cause: 'assess', user: external_user, exercise:)
|
||||
create_list(:submission, 2, cause: 'autosave', contributor: external_user, exercise:)
|
||||
create_list(:submission, 2, cause: 'run', contributor: external_user, exercise:)
|
||||
create(:submission, cause: 'assess', contributor: external_user, exercise:)
|
||||
end
|
||||
|
||||
context 'when viewing the default submission statistics page without a parameter' do
|
||||
it 'does not list autosaved submissions' do
|
||||
perform_request
|
||||
expect(assigns(:all_events).filter {|event| event.is_a? Submission }).to contain_exactly(
|
||||
an_object_having_attributes(cause: 'run', user_id: external_user.id),
|
||||
an_object_having_attributes(cause: 'assess', user_id: external_user.id),
|
||||
an_object_having_attributes(cause: 'run', user_id: external_user.id)
|
||||
an_object_having_attributes(cause: 'run', contributor: external_user),
|
||||
an_object_having_attributes(cause: 'assess', contributor: external_user),
|
||||
an_object_having_attributes(cause: 'run', contributor: external_user)
|
||||
)
|
||||
end
|
||||
end
|
||||
@ -283,7 +283,7 @@ describe ExercisesController do
|
||||
perform_request
|
||||
submissions = assigns(:all_events).filter {|event| event.is_a? Submission }
|
||||
expect(submissions).to match_array Submission.all
|
||||
expect(submissions).to include an_object_having_attributes(cause: 'autosave', user_id: external_user.id)
|
||||
expect(submissions).to include an_object_having_attributes(cause: 'autosave', contributor: external_user)
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -291,7 +291,7 @@ describe ExercisesController do
|
||||
describe 'POST #submit' do
|
||||
let(:output) { {} }
|
||||
let(:perform_request) { post :submit, format: :json, params: {id: exercise.id, submission: {cause: 'submit', exercise_id: exercise.id}} }
|
||||
let(:user) { create(:external_user) }
|
||||
let(:contributor) { create(:external_user) }
|
||||
let(:scoring_response) do
|
||||
[{
|
||||
status: :ok,
|
||||
@ -312,8 +312,8 @@ describe ExercisesController do
|
||||
end
|
||||
|
||||
before do
|
||||
create(:lti_parameter, external_user: user, exercise:)
|
||||
submission = build(:submission, exercise:, user:)
|
||||
create(:lti_parameter, external_user: contributor, exercise:)
|
||||
submission = build(:submission, exercise:, contributor:)
|
||||
allow(submission).to receive_messages(normalized_score: 1, calculate_score: scoring_response, redirect_to_feedback?: false)
|
||||
allow(Submission).to receive(:create).and_return(submission)
|
||||
end
|
||||
|
@ -210,7 +210,7 @@ describe SessionsController do
|
||||
# Todo replace session with lti_parameter
|
||||
# Todo create LtiParameter Object
|
||||
# session[:lti_parameters] = {}
|
||||
allow(controller).to receive(:current_user).and_return(submission.user)
|
||||
allow(controller).to receive(:current_user).and_return(submission.contributor)
|
||||
perform_request.call
|
||||
end
|
||||
|
||||
|
@ -6,9 +6,9 @@ describe SubmissionsController do
|
||||
render_views
|
||||
|
||||
let(:submission) { create(:submission) }
|
||||
let(:user) { create(:admin) }
|
||||
let(:contributor) { create(:admin) }
|
||||
|
||||
before { allow(controller).to receive(:current_user).and_return(user) }
|
||||
before { allow(controller).to receive(:current_user).and_return(contributor) }
|
||||
|
||||
describe 'POST #create' do
|
||||
before do
|
||||
|
@ -22,12 +22,12 @@ describe 'Editor', js: true do
|
||||
weight: 2.0,
|
||||
}]
|
||||
end
|
||||
let(:user) { create(:teacher) }
|
||||
let(:contributor) { create(:teacher) }
|
||||
let(:exercise_without_test) { create(:tdd) }
|
||||
|
||||
before do
|
||||
visit(sign_in_path)
|
||||
fill_in('email', with: user.email)
|
||||
fill_in('email', with: contributor.email)
|
||||
fill_in('password', with: attributes_for(:teacher)[:password])
|
||||
click_button(I18n.t('sessions.new.link'))
|
||||
allow_any_instance_of(LtiHelper).to receive(:lti_outcome_service?).and_return(true)
|
||||
@ -111,7 +111,7 @@ describe 'Editor', js: true do
|
||||
end
|
||||
|
||||
it 'contains a button for submitting the exercise' do
|
||||
submission = build(:submission, user:, exercise:)
|
||||
submission = build(:submission, contributor:, exercise:)
|
||||
allow(submission).to receive(:calculate_score).and_return(scoring_response)
|
||||
allow(Submission).to receive(:find).and_return(submission)
|
||||
click_button(I18n.t('exercises.editor.score'))
|
||||
|
@ -9,10 +9,10 @@ describe 'ExternalUserStatistics', js: true do
|
||||
let(:password) { 'password123456' }
|
||||
|
||||
before do
|
||||
2.times { create(:submission, cause: 'autosave', user: learner, exercise:, study_group:) }
|
||||
2.times { create(:submission, cause: 'run', user: learner, exercise:, study_group:) }
|
||||
create(:submission, cause: 'assess', user: learner, exercise:, study_group:)
|
||||
create(:submission, cause: 'submit', user: learner, exercise:, study_group:)
|
||||
2.times { create(:submission, cause: 'autosave', contributor: learner, exercise:, study_group:) }
|
||||
2.times { create(:submission, cause: 'run', contributor: learner, exercise:, study_group:) }
|
||||
create(:submission, cause: 'assess', contributor: learner, exercise:, study_group:)
|
||||
create(:submission, cause: 'submit', contributor: learner, exercise:, study_group:)
|
||||
|
||||
study_group.external_users << learner
|
||||
study_group.internal_users << user
|
||||
|
@ -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
|
||||
|
@ -7,7 +7,7 @@ describe RequestForCommentPolicy do
|
||||
|
||||
context 'when the RfC visibility is not considered' do
|
||||
let(:submission) { create(:submission, study_group: create(:study_group)) }
|
||||
let(:rfc) { create(:rfc, submission:, user: submission.user) }
|
||||
let(:rfc) { create(:rfc, submission:, user: submission.contributor) }
|
||||
|
||||
%i[destroy? edit?].each do |action|
|
||||
permissions(action) do
|
||||
|
@ -20,8 +20,8 @@ describe SubmissionPolicy do
|
||||
end
|
||||
|
||||
it 'grants access to authors' do
|
||||
user = create(:external_user)
|
||||
expect(policy).to permit(user, build(:submission, exercise: Exercise.new, user_id: user.id, user_type: user.class.name))
|
||||
contributor = create(:external_user)
|
||||
expect(policy).to permit(contributor, build(:submission, exercise: Exercise.new, contributor:))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user