Skip to content

Commit

Permalink
add test for participants controller
Browse files Browse the repository at this point in the history
  • Loading branch information
ZhiyuanMa2017 committed Mar 7, 2022
1 parent 13ab3f7 commit 3c9f59f
Showing 1 changed file with 83 additions and 53 deletions.
136 changes: 83 additions & 53 deletions spec/controllers/participants_controller_spec.rb
@@ -1,12 +1,14 @@
describe ParticipantsController do
let(:instructor) { build(:instructor, id: 6) }
let(:student) { build(:student) }
let(:student1) { build_stubbed(:student, id: 1, name: 'student') }
let(:course_participant) { build(:course_participant) }
let(:participant) { build(:participant) }
let(:assignment_node) { build(:assignment_node) }
let(:assignment) { build(:assignment) }
let(:team) { build(:team) }
let(:participant) { build(:participant) }

describe '#action_allowed?' do
context 'when current user is student' do
it 'allows update_duties action' do
Expand Down Expand Up @@ -36,59 +38,11 @@
end
end

describe '#destroy' do
it 'deletes the participant and redirects to #list page' do
allow(Participant).to receive(:find).with('1').and_return(course_participant)
allow(course_participant).to receive(:destroy).and_return(true)
params = { id: 1 }
session = { user: instructor }
post :destroy, params, session
expect(response).to redirect_to('/participants/list?id=1&model=Course')
end
end

describe '#delete' do
it 'deletes the assignment_participant and redirects to #review_mapping/list_mappings page' do
allow(Participant).to receive(:find).with('1').and_return(participant)
allow(participant).to receive(:destroy).and_return(true)
params = { id: 1 }
session = { user: instructor }
get :delete, params, session
expect(response).to redirect_to('/review_mapping/list_mappings?id=1')
end
end

describe '#update_authorizations' do
it 'updates the authorizations for the participant' do
allow(Participant).to receive(:find).with('1').and_return(participant)
params = { authorization: 'participant', id: 1 }
session = { user: instructor }
get :update_authorizations, params, session
expect(response).to redirect_to('/participants/list?id=1&model=Assignment')
end
end

describe '#validate_authorizations' do
# Test case for successful update of participant to reviewer, expects the success flash message after role is updated.
it 'updates the authorizations for the participant to make them reviewer' do
allow(Participant).to receive(:find).with('1').and_return(participant)
params = { authorization: 'reviewer', id: 1 }
session = { user: instructor }
get :update_authorizations, params, session
expect(flash[:success]).to eq 'The role of the selected participants has been successfully updated.'
expect(participant.can_review).to eq(true)
expect(participant.can_submit).to eq(false)
expect(participant.can_take_quiz).to eq(false)
end

# Test for case where we expect to encounter an error in update_attributes method
it ' throws an exception while validating authorizations' do
allow(Participant).to receive(:find).with('1').and_return(participant)
allow(participant).to receive(:update_attributes).and_raise(StandardError)
params = { authorization: 'reviewer', id: 1 }
session = { user: instructor }
get :update_authorizations, params, session
expect(flash[:error]).to eq 'The update action failed.'
describe '#controller_locale' do
it 'should return I18n.default_locale' do
user = student
stub_current_user(user, user.role.name, user.role)
expect(controller.send(:controller_locale)).to eq(I18n.default_locale)
end
end

Expand Down Expand Up @@ -122,6 +76,27 @@
end
end

describe '#update_authorizations' do
it 'updates the authorizations for the participant' do
allow(Participant).to receive(:find).with('1').and_return(participant)
params = { authorization: 'participant', id: 1 }
session = { user: instructor }
get :update_authorizations, params, session
expect(response).to redirect_to('/participants/list?id=1&model=Assignment')
end
end

describe '#destroy' do
it 'deletes the participant and redirects to #list page' do
allow(Participant).to receive(:find).with('1').and_return(course_participant)
allow(course_participant).to receive(:destroy).and_return(true)
params = { id: 1 }
session = { user: instructor }
post :destroy, params, session
expect(response).to redirect_to('/participants/list?id=1&model=Course')
end
end

describe '#inherit' do
it 'inherits the participant list' do
allow(Assignment).to receive(:find).with('1').and_return(assignment)
Expand All @@ -144,6 +119,61 @@
end
end

describe '#change_handle' do
it 'changes the handle of the participant' do
allow(AssignmentParticipant).to receive(:find).with('1').and_return(participant)
params = { id: 1, participant: { handle: 'new_handle' } }
session = { user: student1 }
xhr :get, :change_handle, params, session
expect(response).to have_http_status(200)
end
end

describe '#delete' do
it 'deletes the assignment_participant and redirects to #review_mapping/list_mappings page' do
allow(Participant).to receive(:find).with('1').and_return(participant)
allow(participant).to receive(:destroy).and_return(true)
params = { id: 1 }
session = { user: instructor }
get :delete, params, session
expect(response).to redirect_to('/review_mapping/list_mappings?id=1')
end
end

describe '#view_copyright_grants' do
it 'renders the copyright_grants template' do
allow(Assignment).to receive(:find).with('1').and_return(assignment)
params = { id: 1 }
session = { user: instructor }
get :view_copyright_grants, params, session
expect(response).to render_template('view_copyright_grants')
end
end

describe '#validate_authorizations' do
# Test case for successful update of participant to reviewer, expects the success flash message after role is updated.
it 'updates the authorizations for the participant to make them reviewer' do
allow(Participant).to receive(:find).with('1').and_return(participant)
params = { authorization: 'reviewer', id: 1 }
session = { user: instructor }
get :update_authorizations, params, session
expect(flash[:success]).to eq 'The role of the selected participants has been successfully updated.'
expect(participant.can_review).to eq(true)
expect(participant.can_submit).to eq(false)
expect(participant.can_take_quiz).to eq(false)
end

# Test for case where we expect to encounter an error in update_attributes method
it ' throws an exception while validating authorizations' do
allow(Participant).to receive(:find).with('1').and_return(participant)
allow(participant).to receive(:update_attributes).and_raise(StandardError)
params = { authorization: 'reviewer', id: 1 }
session = { user: instructor }
get :update_authorizations, params, session
expect(flash[:error]).to eq 'The update action failed.'
end
end

describe '#get_user_info' do
it 'gives the user information from the the team user' do
allow(assignment).to receive(:participants).and_return([participant])
Expand Down

0 comments on commit 3c9f59f

Please sign in to comment.