Files
grecia/spec/models/legislation/question_spec.rb
Javi Martín 6268ae9274 Add and apply RSpec/BeNil rubocop rule
This rule was added in rubocop-rspec 2.9.0.

We were using `be_nil` 50% of the time, and `be nil` the rest of the
time. No strong preference for either one, but IMHO we don't lose
anything be being consistent.
2023-09-06 19:00:56 +02:00

78 lines
2.2 KiB
Ruby

require "rails_helper"
describe Legislation::Question do
let(:question) { create(:legislation_question) }
it_behaves_like "acts as paranoid", :legislation_question
describe "Concerns" do
it_behaves_like "notifiable"
it_behaves_like "globalizable", :legislation_question
end
it "is valid" do
expect(question).to be_valid
end
context "can be deleted" do
example "when it has no options or answers" do
question = create(:legislation_question)
expect do
question.destroy
end.to change { Legislation::Question.count }.by(-1)
end
example "when it has options but no answers" do
create(:legislation_question_option, question: question, value: "Yes")
create(:legislation_question_option, question: question, value: "No")
expect do
question.destroy
end.to change { Legislation::Question.count }.by(-1)
end
example "when it has options and answers" do
option_1 = create(:legislation_question_option, question: question, value: "Yes")
option_2 = create(:legislation_question_option, question: question, value: "No")
create(:legislation_answer, question: question, question_option: option_1)
create(:legislation_answer, question: question, question_option: option_2)
expect do
question.destroy
end.to change { Legislation::Question.count }.by(-1)
end
end
describe "#next_question_id" do
let!(:question1) { create(:legislation_question) }
let!(:question2) do
create(:legislation_question, legislation_process_id: question1.legislation_process_id)
end
it "returns the next question" do
expect(question1.next_question_id).to eq(question2.id)
end
it "returns nil" do
expect(question2.next_question_id).to be nil
end
end
describe "#first_question_id" do
let!(:question1) { create(:legislation_question) }
let!(:question2) do
create(:legislation_question, legislation_process_id: question1.legislation_process_id)
end
it "returns the first question" do
expect(question1.first_question_id).to eq(question1.id)
expect(question2.first_question_id).to eq(question1.id)
end
end
describe "notifications" do
it_behaves_like "notifiable"
end
end