Added newsletter specs

This commit is contained in:
María Checa
2018-02-09 17:57:43 +01:00
parent 14ce229c8c
commit e8c797766a
7 changed files with 358 additions and 26 deletions

View File

@@ -0,0 +1,129 @@
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

View File

@@ -1,26 +0,0 @@
require 'rails_helper'
feature 'Admin newsletters emails' do
let(:download_button_text) { 'Download zip with users list' }
background do
@admin = create(:administrator)
@newsletter_user = create(:user, newsletter: true)
@non_newsletter_user = create(:user, newsletter: false)
login_as(@admin.user)
visit admin_newsletters_path
end
scenario 'Index' do
expect(page).to have_content download_button_text
end
scenario 'Download newsletter email zip' do
click_link download_button_text
downloaded_file_content = Zip::InputStream.open(StringIO.new(page.body)).get_next_entry.get_input_stream {|is| is.read }
expect(downloaded_file_content).to include(@admin.user.email, @newsletter_user.email)
expect(downloaded_file_content).not_to include(@non_newsletter_user.email)
end
end