Fix tests for user_exercise_feedback

This commit is contained in:
Maximilian Grundke
2017-11-08 15:41:48 +01:00
parent 7fa5765cdd
commit 03141409e8
2 changed files with 49 additions and 26 deletions

View File

@ -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

View File

@ -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