Add invalid newsletter scenarios to feature spec
Newsletters with an invalid user segment should display a warning on show and index. Also those newsletters should not be sent.
This commit is contained in:
@@ -8,33 +8,56 @@ feature "Admin newsletter emails" do
|
||||
create(:budget)
|
||||
end
|
||||
|
||||
scenario "Show" do
|
||||
newsletter = create(:newsletter, subject: "This is a subject",
|
||||
segment_recipient: 'all_users',
|
||||
from: "no-reply@consul.dev",
|
||||
body: "This is a body")
|
||||
context "Show" do
|
||||
scenario "Valid newsletter" do
|
||||
newsletter = create(:newsletter, subject: "This is a subject",
|
||||
segment_recipient: 'all_users',
|
||||
from: "no-reply@consul.dev",
|
||||
body: "This is a body")
|
||||
|
||||
visit admin_newsletter_path(newsletter)
|
||||
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"
|
||||
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 "Invalid newsletter" do
|
||||
invalid_newsletter = create(:newsletter)
|
||||
invalid_newsletter.update_attribute(:segment_recipient, 'invalid_segment')
|
||||
|
||||
visit admin_newsletter_path(invalid_newsletter)
|
||||
|
||||
expect(page).to have_content("Recipients user segment is invalid")
|
||||
end
|
||||
end
|
||||
|
||||
scenario "Index" do
|
||||
3.times { create(:newsletter) }
|
||||
context "Index" do
|
||||
scenario "Valid newsletters" do
|
||||
3.times { create(:newsletter) }
|
||||
|
||||
visit admin_newsletters_path
|
||||
visit admin_newsletters_path
|
||||
|
||||
expect(page).to have_css(".newsletter", count: 3)
|
||||
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}")
|
||||
Newsletter.all.each do |newsletter|
|
||||
segment_recipient = I18n.t("admin.segment_recipient.#{newsletter.segment_recipient}")
|
||||
within("#newsletter_#{newsletter.id}") do
|
||||
expect(page).to have_content newsletter.subject
|
||||
expect(page).to have_content segment_recipient
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
scenario "Invalid newsletter" do
|
||||
invalid_newsletter = create(:newsletter)
|
||||
invalid_newsletter.update_attribute(:segment_recipient, 'invalid_segment')
|
||||
|
||||
visit admin_newsletters_path
|
||||
|
||||
expect(page).to have_content("Recipients user segment is invalid")
|
||||
end
|
||||
end
|
||||
|
||||
scenario "Create" do
|
||||
@@ -103,24 +126,33 @@ feature "Admin newsletter emails" do
|
||||
expect(page).to have_content error_message
|
||||
end
|
||||
|
||||
scenario "Send newsletter email", :js do
|
||||
newsletter = create(:newsletter)
|
||||
visit admin_newsletter_path(newsletter)
|
||||
context "Send newsletter", :js do
|
||||
scenario "Sends newsletter emails", :js do
|
||||
newsletter = create(:newsletter)
|
||||
visit admin_newsletter_path(newsletter)
|
||||
|
||||
click_link "Send"
|
||||
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?")
|
||||
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"
|
||||
expect(page).to have_content "Newsletter sent successfully"
|
||||
end
|
||||
|
||||
scenario "Invalid newsletter cannot be sent", :js do
|
||||
invalid_newsletter = create(:newsletter)
|
||||
invalid_newsletter.update_attribute(:segment_recipient, 'invalid_segment')
|
||||
visit admin_newsletter_path(invalid_newsletter)
|
||||
|
||||
expect(page).not_to have_link("Send")
|
||||
end
|
||||
end
|
||||
|
||||
scenario "Select list of users to send newsletter" do
|
||||
UserSegments::SEGMENTS.each do |user_segment|
|
||||
visit new_admin_newsletter_path
|
||||
|
||||
fill_in_newsletter_form
|
||||
select I18n.t("admin.segment_recipient.#{user_segment}"), from: 'newsletter_segment_recipient'
|
||||
fill_in_newsletter_form(segment_recipient: I18n.t("admin.segment_recipient.#{user_segment}"))
|
||||
click_button "Create Newsletter"
|
||||
|
||||
expect(page).to have_content(I18n.t("admin.segment_recipient.#{user_segment}"))
|
||||
|
||||
Reference in New Issue
Block a user