Files
grecia/spec/components/dashboard/poll_component_spec.rb
Javi Martín de303aa1df Extract component to render dashboard polls
Just like we usually do when reorganizing code.
2025-08-27 17:40:45 +02:00

52 lines
1.7 KiB
Ruby

require "rails_helper"
describe Dashboard::PollComponent do
include Rails.application.routes.url_helpers
let(:proposal) { create(:proposal, :draft) }
before { sign_in(proposal.author) }
describe "Poll card content" do
describe "actions visibility" do
it "shows results link for current polls" do
current = create(:poll, related: proposal)
render_inline Dashboard::PollComponent.new(current)
expect(page).not_to have_link "Edit survey"
expect(page).to have_link "View results", href: results_proposal_poll_path(proposal, current)
end
it "shows results link for expired polls" do
expired = create(:poll, :expired, related: proposal)
render_inline Dashboard::PollComponent.new(expired)
expect(page).not_to have_link "Edit survey"
expect(page).to have_link "View results", href: results_proposal_poll_path(proposal, expired)
end
it "shows edit link for upcoming polls" do
upcoming = create(:poll, related: proposal, starts_at: 1.week.from_now)
render_inline Dashboard::PollComponent.new(upcoming)
expect(page).to have_link "Edit survey", href: edit_proposal_dashboard_poll_path(proposal, upcoming)
expect(page).not_to have_link "View results"
end
end
it "renders poll title and dates" do
expired = create(:poll, :expired, related: proposal)
render_inline Dashboard::PollComponent.new(expired)
expect(page).to have_content I18n.l(expired.starts_at.to_date)
expect(page).to have_content I18n.l(expired.ends_at.to_date)
expect(page).to have_link expired.title
expect(page).to have_link expired.title, href: proposal_poll_path(proposal, expired)
end
end
end