Files
nairobi/spec/features/admin/system_emails_spec.rb
2018-07-26 17:55:06 +02:00

114 lines
5.3 KiB
Ruby

require 'rails_helper'
feature "System Emails" do
background do
admin = create(:administrator)
login_as(admin.user)
end
context "Index" do
scenario "Lists all system emails with correct actions" do
visit admin_system_emails_path
within('#proposal_notification_digest') do
expect(page).to have_link('View')
end
end
end
context "View" do
scenario "#proposal_notification_digest" do
proposal_a = create(:proposal, title: 'Proposal A')
proposal_b = create(:proposal, title: 'Proposal B')
proposal_notification_a = create(:proposal_notification, proposal: proposal_a,
title: 'Proposal A Title',
body: 'Proposal A Notification Body')
proposal_notification_b = create(:proposal_notification, proposal: proposal_b,
title: 'Proposal B Title',
body: 'Proposal B Notification Body')
create(:notification, notifiable: proposal_notification_a)
create(:notification, notifiable: proposal_notification_b)
visit admin_system_email_view_path('proposal_notification_digest')
expect(page).to have_content('Proposal notifications in')
expect(page).to have_link('Proposal A Title', href: proposal_url(proposal_a,
anchor: 'tab-notifications'))
expect(page).to have_link('Proposal B Title', href: proposal_url(proposal_b,
anchor: 'tab-notifications'))
expect(page).to have_content('Proposal A Notification Body')
expect(page).to have_content('Proposal B Notification Body')
end
end
context "Preview Pending" do
scenario "#proposal_notification_digest" do
proposal_a = create(:proposal, title: 'Proposal A')
proposal_b = create(:proposal, title: 'Proposal B')
proposal_notification_a = create(:proposal_notification, proposal: proposal_a,
title: 'Proposal A Title',
body: 'Proposal A Notification Body')
proposal_notification_b = create(:proposal_notification, proposal: proposal_b,
title: 'Proposal B Title',
body: 'Proposal B Notification Body')
create(:notification, notifiable: proposal_notification_a, emailed_at: nil)
create(:notification, notifiable: proposal_notification_b, emailed_at: nil)
visit admin_system_email_preview_pending_path('proposal_notification_digest')
expect(page).to have_content('This is the content pending to be sent')
expect(page).to have_link('Proposal A', href: proposal_url(proposal_a))
expect(page).to have_link('Proposal B', href: proposal_url(proposal_b))
expect(page).to have_link('Proposal A Title', href: proposal_url(proposal_a,
anchor: 'tab-notifications'))
expect(page).to have_link('Proposal B Title', href: proposal_url(proposal_b,
anchor: 'tab-notifications'))
end
scenario "#moderate_pending" do
proposal1 = create(:proposal, title: 'Proposal A')
proposal2 = create(:proposal, title: 'Proposal B')
proposal_notification1 = create(:proposal_notification, proposal: proposal1,
title: 'Proposal A Title',
body: 'Proposal A Notification Body')
proposal_notification2 = create(:proposal_notification, proposal: proposal2)
create(:notification, notifiable: proposal_notification1, emailed_at: nil)
create(:notification, notifiable: proposal_notification2, emailed_at: nil)
visit admin_system_email_preview_pending_path('proposal_notification_digest')
within("#proposal_notification_#{proposal_notification1.id}") do
click_on "Moderate notification send"
end
visit admin_system_email_preview_pending_path('proposal_notification_digest')
expect(Notification.count).to equal(1)
expect(Activity.last.actionable_type).to eq('ProposalNotification')
expect(page).not_to have_content("Proposal A Title")
end
scenario "#send_pending" do
proposal = create(:proposal)
proposal_notification = create(:proposal_notification, proposal: proposal,
title: 'Proposal A Title',
body: 'Proposal A Notification Body')
voter = create(:user, :level_two)
create(:notification, notifiable: proposal_notification, user: voter, emailed_at: nil)
create(:follow, user: voter, followable: proposal)
visit admin_system_emails_path
click_on "Send pending"
email = open_last_email
expect(email).to deliver_to(voter)
expect(email).to have_body_text(proposal_notification.body)
expect(page).to have_content("Pending notifications sent succesfully")
end
end
end