Files
grecia/spec/components/polls/results_component_spec.rb
taitus f3050a1aa5 Manage correctly results and stats for open-ended questions
Note that we are not including Poll::PartialResults for open-ended
questions resutls. The reason is that we do not contemplate the
possibility of there being open questions in booths. Manually
counting and introducing the votes in the system is not feasible.
2025-10-16 14:26:30 +02:00

37 lines
1.7 KiB
Ruby

require "rails_helper"
describe Polls::ResultsComponent do
let(:poll) { create(:poll) }
let(:question_1) { create(:poll_question, :yes_no, poll: poll, title: "Do you like Consul Democracy?") }
let(:option_yes) { question_1.question_options.find_by(title: "Yes") }
let(:option_no) { question_1.question_options.find_by(title: "No") }
let(:question_2) { create(:poll_question, :abc, poll: poll, title: "Which option do you prefer?") }
let(:option_a) { question_2.question_options.find_by(title: "Answer A") }
let(:option_b) { question_2.question_options.find_by(title: "Answer B") }
let(:option_c) { question_2.question_options.find_by(title: "Answer C") }
it "renders results content" do
create_list(:poll_answer, 2, question: question_1, option: option_yes)
create(:poll_answer, question: question_1, option: option_no)
create(:poll_answer, question: question_2, option: option_a)
create(:poll_answer, question: question_2, option: option_b)
create(:poll_answer, question: question_2, option: option_c)
render_inline Polls::ResultsComponent.new(poll)
expect(page).to have_content "Do you like Consul Democracy?"
expect(page).to have_table "question_#{question_1.id}_results_table",
with_rows: [{ "Most voted answer: Yes" => "2 (66.67%)",
"No" => "1 (33.33%)" }]
expect(page).to have_content "Which option do you prefer?"
expect(page).to have_table "question_#{question_2.id}_results_table",
with_rows: [{ "Most voted answer: Answer A" => "1 (33.33%)",
"Answer B" => "1 (33.33%)",
"Answer C" => "1 (33.33%)" }]
end
end