Applies new card design for polls in proposals dashboard. Fixes warnings during tests. Adds tests for new card design for polls in proposals dashboard.
136 lines
3.6 KiB
Ruby
136 lines
3.6 KiB
Ruby
require 'rails_helper'
|
|
|
|
feature 'Polls' do
|
|
let!(:proposal) { create(:proposal, :draft) }
|
|
|
|
before do
|
|
login_as(proposal.author)
|
|
visit proposal_dashboard_index_path(proposal)
|
|
end
|
|
|
|
scenario 'Has a link to polls feature' do
|
|
expect(page).to have_link('Polls')
|
|
end
|
|
|
|
scenario 'Create a poll', :js do
|
|
click_link 'Polls'
|
|
click_link 'Create poll'
|
|
|
|
start_date = 1.week.from_now
|
|
end_date = 2.weeks.from_now
|
|
|
|
fill_in "poll_name", with: "Upcoming poll"
|
|
fill_in 'poll_starts_at', with: start_date.strftime("%d/%m/%Y")
|
|
fill_in 'poll_ends_at', with: end_date.strftime("%d/%m/%Y")
|
|
fill_in 'poll_description', with: "Upcomming poll's description. This poll..."
|
|
|
|
expect(page).not_to have_css("#poll_results_enabled")
|
|
expect(page).not_to have_css("#poll_stats_enabled")
|
|
|
|
click_link 'Add question'
|
|
|
|
fill_in 'Question', with: 'First question'
|
|
|
|
click_link 'Add answer'
|
|
fill_in 'Title', with: 'First answer'
|
|
|
|
click_button "Create poll"
|
|
|
|
expect(page).to have_content "Poll created successfully"
|
|
expect(page).to have_content "Upcoming poll"
|
|
expect(page).to have_content I18n.l(start_date.to_date)
|
|
end
|
|
|
|
scenario 'Edit poll is allowed for upcoming polls' do
|
|
poll = create(:poll, :incoming, related: proposal)
|
|
|
|
visit proposal_dashboard_polls_path(proposal)
|
|
|
|
within "div#poll_#{poll.id}" do
|
|
expect(page).to have_content('Edit survey')
|
|
|
|
click_link 'Edit survey'
|
|
end
|
|
|
|
click_button 'Update poll'
|
|
|
|
expect(page).to have_content 'Poll updated successfully'
|
|
end
|
|
|
|
scenario 'Edit poll is not allowed for current polls' do
|
|
poll = create(:poll, :current, related: proposal)
|
|
|
|
visit proposal_dashboard_polls_path(proposal)
|
|
|
|
within "div#poll_#{poll.id}" do
|
|
expect(page).not_to have_content('Edit survey')
|
|
end
|
|
end
|
|
|
|
scenario 'Edit poll is not allowed for expired polls' do
|
|
poll = create(:poll, :expired, related: proposal)
|
|
|
|
visit proposal_dashboard_polls_path(proposal)
|
|
|
|
within "div#poll_#{poll.id}" do
|
|
expect(page).not_to have_content('Edit survey')
|
|
end
|
|
end
|
|
|
|
scenario 'View results not available for upcoming polls' do
|
|
poll = create(:poll, :incoming, related: proposal)
|
|
|
|
visit proposal_dashboard_polls_path(proposal)
|
|
|
|
within "div#poll_#{poll.id}" do
|
|
expect(page).not_to have_content('View results')
|
|
end
|
|
end
|
|
|
|
scenario 'View results available for current polls' do
|
|
poll = create(:poll, :current, related: proposal)
|
|
|
|
visit proposal_dashboard_polls_path(proposal)
|
|
|
|
within "div#poll_#{poll.id}" do
|
|
expect(page).to have_content('View results')
|
|
end
|
|
end
|
|
|
|
scenario 'View results available for expired polls' do
|
|
poll = create(:poll, :expired, related: proposal)
|
|
|
|
visit proposal_dashboard_polls_path(proposal)
|
|
|
|
within "div#poll_#{poll.id}" do
|
|
expect(page).to have_content('View results')
|
|
end
|
|
end
|
|
|
|
scenario 'View results redirects to results in public zone', js: true do
|
|
poll = create(:poll, :expired, related: proposal)
|
|
|
|
visit proposal_dashboard_polls_path(proposal)
|
|
|
|
within "div#poll_#{poll.id}" do
|
|
click_link 'View results'
|
|
end
|
|
|
|
page.driver.browser.switch_to.window page.driver.browser.window_handles.last do
|
|
expect(page.current_path).to eq(results_poll_path(poll))
|
|
end
|
|
end
|
|
|
|
scenario 'Poll card' do
|
|
poll = create(:poll, :expired, related: proposal)
|
|
|
|
visit proposal_dashboard_polls_path(proposal)
|
|
|
|
within "div#poll_#{poll.id}" do
|
|
expect(page).to have_content(I18n.l(poll.starts_at.to_date))
|
|
expect(page).to have_content(I18n.l(poll.ends_at.to_date))
|
|
expect(page).to have_link(poll.title)
|
|
end
|
|
end
|
|
end
|