Don't allow to modify answer's videos for started polls
Same rules that will apply for the answer itself should apply for the attachments like videos, images, and/or documents.
This commit is contained in:
committed by
Javi Martín
parent
14542df0de
commit
5fe86264ca
@@ -0,0 +1,87 @@
|
||||
require "rails_helper"
|
||||
|
||||
describe Admin::Poll::Questions::Answers::VideosController, :admin do
|
||||
let(:current_answer) { create(:poll_question_answer, poll: create(:poll)) }
|
||||
let(:future_answer) { create(:poll_question_answer, poll: create(:poll, :future)) }
|
||||
|
||||
describe "POST create" do
|
||||
it "is not possible for an already started poll" do
|
||||
post :create, params: {
|
||||
poll_question_answer_video: {
|
||||
title: "Video from started poll",
|
||||
url: "https://www.youtube.com/watch?v=-JMf43st-1A"
|
||||
},
|
||||
answer_id: current_answer
|
||||
}
|
||||
|
||||
expect(flash[:alert]).to eq "You do not have permission to carry out the action 'create' on Video."
|
||||
expect(Poll::Question::Answer::Video.count).to eq 0
|
||||
end
|
||||
|
||||
it "is possible for a not started poll" do
|
||||
post :create, params: {
|
||||
poll_question_answer_video: {
|
||||
title: "Video from not started poll",
|
||||
url: "https://www.youtube.com/watch?v=-JMf43st-1A"
|
||||
},
|
||||
answer_id: future_answer
|
||||
}
|
||||
|
||||
expect(response).to redirect_to admin_answer_videos_path(future_answer)
|
||||
expect(flash[:notice]).to eq "Video created successfully"
|
||||
expect(Poll::Question::Answer::Video.count).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
describe "PATCH update" do
|
||||
it "is not possible for an already started poll" do
|
||||
current_video = create(:poll_answer_video, answer: current_answer, title: "Sample title")
|
||||
|
||||
patch :update, params: {
|
||||
poll_question_answer_video: {
|
||||
title: "New title"
|
||||
},
|
||||
id: current_video,
|
||||
answer_id: current_answer
|
||||
}
|
||||
|
||||
expect(flash[:alert]).to eq "You do not have permission to carry out the action 'update' on Video."
|
||||
expect(current_video.reload.title).to eq "Sample title"
|
||||
end
|
||||
|
||||
it "is possible for a not started poll" do
|
||||
future_video = create(:poll_answer_video, answer: future_answer)
|
||||
|
||||
patch :update, params: {
|
||||
poll_question_answer_video: {
|
||||
title: "New title"
|
||||
},
|
||||
id: future_video,
|
||||
answer_id: future_answer
|
||||
}
|
||||
|
||||
expect(response).to redirect_to admin_answer_videos_path(future_answer)
|
||||
expect(flash[:notice]).to eq "Changes saved"
|
||||
expect(future_video.reload.title).to eq "New title"
|
||||
end
|
||||
end
|
||||
|
||||
describe "DELETE destroy" do
|
||||
it "is not possible for an already started poll" do
|
||||
current_video = create(:poll_answer_video, answer: current_answer)
|
||||
delete :destroy, params: { answer_id: current_answer, id: current_video }
|
||||
|
||||
expect(flash[:alert]).to eq "You do not have permission to carry out the action 'destroy' on Video."
|
||||
expect(Poll::Question::Answer::Video.count).to eq 1
|
||||
end
|
||||
|
||||
it "is possible for a not started poll" do
|
||||
future_video = create(:poll_answer_video, answer: future_answer)
|
||||
delete :destroy, params: { answer_id: future_answer, id: future_video }
|
||||
|
||||
expect(response).to redirect_to admin_answer_videos_path(future_answer)
|
||||
expect(flash[:notice]).to eq "Answer video deleted successfully."
|
||||
expect(Poll::Question::Answer::Video.count).to eq 0
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user