114 lines
5.3 KiB
Ruby
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
|