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
|