130 lines
3.9 KiB
Ruby
130 lines
3.9 KiB
Ruby
require 'rails_helper'
|
|
|
|
feature "Admin newsletter emails" do
|
|
|
|
background do
|
|
admin = create(:administrator)
|
|
login_as(admin.user)
|
|
create(:budget)
|
|
end
|
|
|
|
scenario "Show" do
|
|
newsletter = create(:newsletter, subject: "This is a subject",
|
|
segment_recipient: 1,
|
|
from: "no-reply@consul.dev",
|
|
body: "This is a body")
|
|
|
|
visit admin_newsletter_path(newsletter)
|
|
|
|
expect(page).to have_content "This is a subject"
|
|
expect(page).to have_content I18n.t("admin.segment_recipient.#{newsletter.segment_recipient}")
|
|
expect(page).to have_content "no-reply@consul.dev"
|
|
expect(page).to have_content "This is a body"
|
|
end
|
|
|
|
scenario "Index" do
|
|
3.times { create(:newsletter) }
|
|
|
|
visit admin_newsletters_path
|
|
|
|
expect(page).to have_css(".newsletter", count: 3)
|
|
|
|
Newsletter.all.each do |newsletter|
|
|
within("#newsletter_#{newsletter.id}") do
|
|
expect(page).to have_content newsletter.subject
|
|
expect(page).to have_content I18n.t("admin.segment_recipient.#{newsletter.segment_recipient}")
|
|
end
|
|
end
|
|
end
|
|
|
|
scenario "Create" do
|
|
visit admin_newsletters_path
|
|
click_link "New newsletter"
|
|
|
|
fill_in_newsletter_form(subject: "This is a subject",
|
|
segment_recipient: "Proposal authors",
|
|
body: "This is a body" )
|
|
click_button "Create Newsletter"
|
|
|
|
expect(page).to have_content "Newsletter created successfully"
|
|
expect(page).to have_content "This is a subject"
|
|
expect(page).to have_content "Proposal authors"
|
|
expect(page).to have_content "no-reply@consul.dev"
|
|
expect(page).to have_content "This is a body"
|
|
end
|
|
|
|
scenario "Update" do
|
|
newsletter = create(:newsletter)
|
|
|
|
visit admin_newsletters_path
|
|
within("#newsletter_#{newsletter.id}") do
|
|
click_link "Edit"
|
|
end
|
|
|
|
fill_in_newsletter_form(subject: "This is a subject",
|
|
segment_recipient: "Investment authors in the current budget",
|
|
body: "This is a body" )
|
|
click_button "Update Newsletter"
|
|
|
|
expect(page).to have_content "Newsletter updated successfully"
|
|
expect(page).to have_content "This is a subject"
|
|
expect(page).to have_content "Investment authors in the current budget"
|
|
expect(page).to have_content "no-reply@consul.dev"
|
|
expect(page).to have_content "This is a body"
|
|
end
|
|
|
|
scenario "Destroy" do
|
|
newsletter = create(:newsletter)
|
|
|
|
visit admin_newsletters_path
|
|
within("#newsletter_#{newsletter.id}") do
|
|
click_link "Delete"
|
|
end
|
|
|
|
expect(page).to have_content "Newsletter deleted successfully"
|
|
expect(page).to have_css(".newsletter", count: 0)
|
|
end
|
|
|
|
scenario 'Errors on create' do
|
|
visit new_admin_newsletter_path
|
|
|
|
click_button "Create Newsletter"
|
|
|
|
expect(page).to have_content error_message
|
|
end
|
|
|
|
scenario "Errors on update" do
|
|
newsletter = create(:newsletter)
|
|
visit edit_admin_newsletter_path(newsletter)
|
|
|
|
fill_in "newsletter_subject", with: ""
|
|
click_button "Update Newsletter"
|
|
|
|
expect(page).to have_content error_message
|
|
end
|
|
|
|
scenario "Send newsletter email", :js do
|
|
newsletter = create(:newsletter)
|
|
visit admin_newsletter_path(newsletter)
|
|
|
|
click_link "Send"
|
|
|
|
total_users = newsletter.list_of_recipients.count
|
|
page.accept_confirm("Are you sure you want to send this newsletter to #{total_users} users?")
|
|
|
|
expect(page).to have_content "Newsletter sent successfully"
|
|
end
|
|
|
|
scenario "Select list of users to send newsletter" do
|
|
Newsletter.segment_recipients.each_key do |user_group|
|
|
visit new_admin_newsletter_path
|
|
|
|
fill_in_newsletter_form
|
|
select I18n.t("admin.segment_recipient.#{user_group}"), from: 'newsletter_segment_recipient'
|
|
click_button "Create Newsletter"
|
|
|
|
expect(page).to have_content(I18n.t("admin.segment_recipient.#{user_group}"))
|
|
end
|
|
end
|
|
end
|