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