Fix tests for user_exercise_feedback
This commit is contained in:
@ -313,30 +313,4 @@ describe ExercisesController do
|
||||
expect_template(:edit)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'redirect after submit' do
|
||||
|
||||
let!(:submission_with_created_at_to_receive_feedback) { FactoryGirl.create(:submission, exercise_id: exercise.id, user_id: user.id, user_type: user.class.name, created_at: (11 - (user.id % 10))) }
|
||||
|
||||
let(:exercise_with_user_feedbacks) { FactoryGirl.build(:dummy_with_user_feedbacks, submission: submission_with_created_at_to_receive_feedback) }
|
||||
let(:exercise_with_21_user_feedbacks) { FactoryGirl.build(:dummy_with_user_feedbacks, user_exercise_feedback_count: 21, submission: submission_with_created_at_to_receive_feedback)) }
|
||||
|
||||
|
||||
|
||||
it 'with less than maximal user feedbacks' do
|
||||
exercise_with_user_feedbacks.send(:redirect_after_submit)
|
||||
expect_redirect(new_user_exercise_feedback_path(user_exercise_feedback: {exercise_id: @exercise.id}))
|
||||
end
|
||||
|
||||
it 'with more than maximal user feedbacks' do
|
||||
exercise_with_user_feedbacks.send(:redirect_after_submit)
|
||||
expect_redirect(new_user_exercise_feedback_path(user_exercise_feedback: {exercise_id: @exercise.id}))
|
||||
end
|
||||
|
||||
|
||||
|
||||
expect_redirect(Exercise.last)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -85,4 +85,53 @@ describe Submission do
|
||||
expect(submission.to_s).to eq(described_class.model_name.human)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#redirect_to_feedback?' do
|
||||
|
||||
context 'with no exercise feedback' do
|
||||
let(:exercise) {FactoryGirl.create(:dummy)}
|
||||
let(:user) {FactoryGirl.build(:external_user, id: (11 - exercise.created_at.to_i % 10) % 10)}
|
||||
let(:submission) {FactoryGirl.build(:submission, exercise: exercise, user: user)}
|
||||
|
||||
it 'sends 10% of users to feedback page' do
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_truthy
|
||||
end
|
||||
|
||||
it 'does not redirect other users' do
|
||||
9.times do |i|
|
||||
submission = FactoryGirl.build(:submission, exercise: exercise, user: FactoryGirl.build(:external_user, id: (11 - exercise.created_at.to_i % 10) - i - 1))
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'with little exercise feedback' do
|
||||
let(:exercise) {FactoryGirl.create(:dummy_with_user_feedbacks)}
|
||||
let(:user) {FactoryGirl.build(:external_user, id: (11 - exercise.created_at.to_i % 10) % 10)}
|
||||
let(:submission) {FactoryGirl.build(:submission, exercise: exercise, user: user)}
|
||||
|
||||
it 'sends 10% of users to feedback page' do
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_truthy
|
||||
end
|
||||
|
||||
it 'does not redirect other users' do
|
||||
9.times do |i|
|
||||
submission = FactoryGirl.build(:submission, exercise: exercise, user: FactoryGirl.build(:external_user, id: (11 - exercise.created_at.to_i % 10) - i - 1))
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'with enough exercise feedback' do
|
||||
let(:exercise) {FactoryGirl.create(:dummy_with_user_feedbacks, user_feedbacks_count: 42)}
|
||||
let(:user) {FactoryGirl.create(:external_user)}
|
||||
|
||||
it 'sends nobody to feedback page' do
|
||||
30.times do |i|
|
||||
submission = FactoryGirl.create(:submission, exercise: exercise, user: FactoryGirl.create(:external_user))
|
||||
expect(submission.send(:redirect_to_feedback?)).to be_falsey
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user