Move dashboard poll partial to component
This commit is contained in:
60
spec/components/dashboard/poll_component_spec.rb
Normal file
60
spec/components/dashboard/poll_component_spec.rb
Normal file
@@ -0,0 +1,60 @@
|
||||
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 edit link for upcoming polls" do
|
||||
upcoming = create(:poll, related: proposal, starts_at: 1.week.from_now)
|
||||
|
||||
render_inline Dashboard::PollComponent.new(upcoming)
|
||||
|
||||
page.find("div#poll_#{upcoming.id}") do |poll_card|
|
||||
expect(poll_card).to have_link "Edit survey",
|
||||
href: edit_proposal_dashboard_poll_path(proposal, upcoming)
|
||||
expect(poll_card).not_to have_link "View results"
|
||||
end
|
||||
end
|
||||
|
||||
it "shows results link for current polls" do
|
||||
current = create(:poll, related: proposal)
|
||||
|
||||
render_inline Dashboard::PollComponent.new(current)
|
||||
|
||||
page.find("div#poll_#{current.id}") do |poll_card|
|
||||
expect(poll_card).not_to have_link "Edit survey"
|
||||
expect(poll_card).to have_link "View results", href: results_proposal_poll_path(proposal, current)
|
||||
end
|
||||
end
|
||||
|
||||
it "shows results link for expired polls" do
|
||||
expired = create(:poll, :expired, related: proposal)
|
||||
|
||||
render_inline Dashboard::PollComponent.new(expired)
|
||||
|
||||
page.find("div#poll_#{expired.id}") do |poll_card|
|
||||
expect(poll_card).not_to have_link "Edit survey"
|
||||
expect(poll_card).to have_link "View results", href: results_proposal_poll_path(proposal, expired)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "renders poll title and dates" do
|
||||
expired = create(:poll, :expired, related: proposal)
|
||||
|
||||
render_inline Dashboard::PollComponent.new(expired)
|
||||
|
||||
page.find("div#poll_#{expired.id}") do |poll_card|
|
||||
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
|
||||
end
|
||||
Reference in New Issue
Block a user