Files
grecia/spec/controllers/admin/legislation/proposals_controller_spec.rb
Javi Martín 2acaa14705 Make it possible to select proposals without JavaScript
This way, when JavaScript hasn't loaded (for whatever reason),
administrators can still use this functionality.
2024-10-25 17:12:47 +02:00

62 lines
2.0 KiB
Ruby

require "rails_helper"
describe Admin::Legislation::ProposalsController, :admin do
describe "PATCH select" do
let(:proposal) { create(:legislation_proposal) }
it "selects the proposal" do
expect do
patch :select, xhr: true, params: { id: proposal.id, process_id: proposal.process.id }
end.to change { proposal.reload.selected? }.from(false).to(true)
expect(response).to be_successful
end
it "does not modify already selected proposals" do
proposal.update!(selected: true)
expect do
patch :select, xhr: true, params: { id: proposal.id, process_id: proposal.process.id }
end.not_to change { proposal.reload.selected? }
end
it "redirects admins without JavaScript to the same page" do
request.env["HTTP_REFERER"] = admin_proposals_path
patch :select, params: { id: proposal.id, process_id: proposal.process.id }
expect(response).to redirect_to admin_proposals_path
expect(flash[:notice]).to eq "Proposal updated successfully."
end
end
describe "PATCH deselect" do
let(:proposal) { create(:legislation_proposal, :selected) }
it "deselects the proposal" do
expect do
patch :deselect, xhr: true, params: { id: proposal.id, process_id: proposal.process.id }
end.to change { proposal.reload.selected? }.from(true).to(false)
expect(response).to be_successful
end
it "does not modify non-selected proposals" do
proposal.update!(selected: false)
expect do
patch :deselect, xhr: true, params: { id: proposal.id, process_id: proposal.process.id }
end.not_to change { proposal.reload.selected? }
end
it "redirects admins without JavaScript to the same page" do
request.env["HTTP_REFERER"] = admin_proposals_path
patch :deselect, params: { id: proposal.id, process_id: proposal.process.id }
expect(response).to redirect_to admin_proposals_path
expect(flash[:notice]).to eq "Proposal updated successfully."
end
end
end