jam-cloud/ruby/spec/mailers/user_mailer_spec.rb

437 lines
15 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require "spec_helper"
###########################################################
# We test just the mailer templating here. #
# In other words, make sure there are no glaring oopsies, #
# such as broken templates, or sending to wrong address #
###########################################################
describe UserMailer do
let(:user) { FactoryGirl.create(:user) }
before(:each) do
#stub_const("APP_CONFIG", app_config)
UserMailer.deliveries.clear
end
describe "should send confirm email" do
let (:mail) { UserMailer.deliveries[0] }
let (:signup_confirmation_url) { "/confirm" }
let (:signup_confirmation_url_with_token ) { "#{signup_confirmation_url}/#{user.signup_token}" }
before(:each) do
UserMailer.confirm_email(user, signup_confirmation_url_with_token).deliver_now
end
it { UserMailer.deliveries.length.should == 1 }
it { mail['from'].to_s.should == UserMailer::DEFAULT_SENDER }
it { mail['to'].to_s.should == user.email }
it { mail.multipart?.should == true } # because we send plain + html
# verify that the messages are correctly configured
it { mail.html_part.body.include?("delighted").should be_true }
it { mail.html_part.body.include?(signup_confirmation_url_with_token).should be_true }
it { mail.text_part.body.include?("delighted").should be_true }
it { mail.text_part.body.include?(signup_confirmation_url_with_token).should be_true }
end
describe "should send welcome email" do
let (:mail) { UserMailer.deliveries[0] }
before(:each) do
UserMailer.welcome_message(user).deliver_now
end
it { UserMailer.deliveries.length.should == 1 }
it { mail['from'].to_s.should == UserMailer::DEFAULT_SENDER }
it { mail['to'].to_s.should == user.email }
it { mail.multipart?.should == true } # because we send plain + html
# verify that the messages are correctly configured
it { mail.html_part.body.include?("delighted").should be_true }
it { mail.text_part.body.include?("delighted").should be_true }
end
describe "should send reset password" do
let(:mail) { UserMailer.deliveries[0] }
before(:each) do
UserMailer.password_reset(user, '/reset_password').deliver_now
end
it { UserMailer.deliveries.length.should == 1 }
it { mail['from'].to_s.should == UserMailer::DEFAULT_SENDER }
it { mail['to'].to_s.should == user.email }
it { mail.multipart?.should == true } # because we send plain + html
# verify that the messages are correctly configured
it { mail.html_part.body.include?("Reset").should be_true }
it { mail.text_part.body.include?("change your JamKazam password").should be_true }
end
describe "should send change password confirmation" do
let(:mail) { UserMailer.deliveries[0] }
before(:each) do
UserMailer.password_changed(user).deliver_now
end
it { UserMailer.deliveries.length.should == 1 }
it { mail['from'].to_s.should == UserMailer::DEFAULT_SENDER }
it { mail['to'].to_s.should == user.email }
it { mail.multipart?.should == true } # because we send plain + html
# verify that the messages are correctly configured
it { mail.html_part.body.include?("changed your password").should be_true }
it { mail.text_part.body.include?("changed your password").should be_true }
end
describe "should send update email confirmation" do
let(:mail) { UserMailer.deliveries[0] }
before(:each) do
UserMailer.updated_email(user).deliver_now
end
it { UserMailer.deliveries.length.should == 1 }
it { mail['from'].to_s.should == UserMailer::DEFAULT_SENDER }
it { mail['to'].to_s.should == user.email }
it { mail.multipart?.should == true } # because we send plain + html
# verify that the messages are correctly configured
it { mail.html_part.body.include?("<b>#{user.email}</b> has been confirmed as your new email address.").should be_true }
it { mail.text_part.body.include?("#{user.email} has been confirmed as your new email address.").should be_true }
end
describe "should send updating email" do
let(:mail) { UserMailer.deliveries[0] }
before(:each) do
user.update_email = "my_new_email@jamkazam.com"
UserMailer.updating_email(user).deliver_now
end
it { UserMailer.deliveries.length.should == 1 }
it { mail['from'].to_s.should == UserMailer::DEFAULT_SENDER }
it { mail['to'].to_s.should == user.update_email }
it { mail.multipart?.should == true } # because we send plain + html
# verify that the messages are correctly configured
it { mail.html_part.body.include?("to confirm your change in email").should be_true }
it { mail.text_part.body.include?("to confirm your change in email").should be_true }
# verify can unsubscribe from bulk emails
it {mail.html_part.body.include?('here to unsubscribe').should be_true}
it {mail.html_part.body.include?("https://www.jamkazam.com/unsubscribe/#{user.unsubscribe_token}")}
end
describe "notifications" do
let(:mail) { UserMailer.deliveries[0] }
let(:music_session) { FactoryGirl.create(:music_session) }
it "should send upcoming email" do
user.update_email = "my_new_email@jamkazam.com"
UserMailer.scheduled_session_reminder_upcoming(music_session.creator, music_session).deliver_now
UserMailer.deliveries.length.should == 1
mail['from'].to_s.should == UserMailer::DEFAULT_SENDER
mail['to'].to_s.should == music_session.creator.email# rsvp_requests.first.user.email
mail.multipart?.should == true # because we send plain + htm
# verify that the messages are correctly configured
mail.html_part.body.include?("This is a reminder that your JamKazam session").should be_true
mail.text_part.body.include?("This is a reminder that your JamKazam session").should be_true
mail.html_part.body.include?("starts in 1 hour").should be_true
mail.text_part.body.include?("starts in 1 hour").should be_true
end
it "should send 1-day reminder" do
user.update_email = "my_new_email@jamkazam.com"
UserMailer.scheduled_session_reminder_day(music_session.creator, music_session).deliver_now
UserMailer.deliveries.length.should == 1
mail['from'].to_s.should == UserMailer::DEFAULT_SENDER
mail['to'].to_s.should == music_session.creator.email# rsvp_requests.first.user.email
mail.multipart?.should == true # because we send plain + htm
# verify that the messages are correctly configured
mail.html_part.body.include?("This is a reminder that your JamKazam session").should be_true
mail.text_part.body.include?("This is a reminder that your JamKazam session").should be_true
mail.html_part.body.include?("is scheduled for tomorrow").should be_true
mail.text_part.body.include?("is scheduled for tomorrow").should be_true
end
end
describe "sends new musicians email" do
let(:mail) { UserMailer.deliveries[0] }
before(:each) do
UserMailer.new_musicians_match(user, []).deliver_now
end
it { UserMailer.deliveries.length.should == 1 }
it { mail['from'].to_s.should == UserMailer::DEFAULT_SENDER }
it { mail['to'].to_s.should == user.email }
it { mail.multipart?.should == true } # because we send plain + html
end
# describe "sends new musicians email" do
# let(:mail) { UserMailer.deliveries[0] }
# before(:each) do
# UserMailer.new_musicians(user, User.musicians).deliver_now
# end
# it { UserMailer.deliveries.length.should == 1 }
# it { mail['from'].to_s.should == UserMailer::DEFAULT_SENDER }
# it { mail['to'].to_s.should == user.email }
# it { mail.multipart?.should == true } # because we send plain + html
# # verify that the messages are correctly configured
# it { mail.html_part.body.include?("New JamKazam Musicians in your Area").should be_true }
# it { mail.text_part.body.include?("New JamKazam Musicians in your Area").should be_true }
# end
describe "sends group session reminder 1", focus: true do
let(:mail) { ActionMailer::Base.deliveries.last }
before(:each) do
ActionMailer::Base.deliveries.clear
UserMailer.group_session_reminder1(user).deliver_now
end
it "sends exactly one email" do
expect(ActionMailer::Base.deliveries.length).to eq(1)
end
it "has the correct from address" do
#expect(mail.from).to eq([UserMailer::DEFAULT_SENDER])
mail['from'].to_s.should == UserMailer::DEFAULT_SENDER
end
it "has the correct recipient" do
expect(mail.to).to eq([user.email])
end
it "is multipart" do
expect(mail).to be_multipart
end
it "has the expected subject" do
expect(mail.subject).to include("Its time to start playing music with others online!")
end
it "includes the correct content in the HTML part" do
expect(mail.html_part.body.to_s).to include("Now that you have set up your gear and checked it out in a solo session on your own")
end
it "includes the correct content in the text part" do
expect(mail.text_part.body.to_s).to include("Now that you have set up your gear and checked it out in a solo session on your own")
end
end
describe "sends group session reminder 2", focus: true do
let(:mail) { ActionMailer::Base.deliveries.last }
before(:each) do
ActionMailer::Base.deliveries.clear
UserMailer.group_session_reminder2(user).deliver_now
end
it "sends exactly one email" do
expect(ActionMailer::Base.deliveries.length).to eq(1)
end
it "has the correct from address" do
mail['from'].to_s.should == UserMailer::DEFAULT_SENDER
end
it "has the correct recipient" do
expect(mail.to).to eq([user.email])
end
it "is multipart" do
expect(mail).to be_multipart
end
it "has the expected subject" do
expect(mail.subject).to include("Take the last step to play online with others now, and experience the joy")
end
it "includes the correct content in the HTML part" do
expect(mail.html_part.body.to_s).to include("If you signed up for JamKazam to play music with others online")
end
it "includes the correct content in the text part" do
expect(mail.text_part.body.to_s).to include("If you signed up for JamKazam to play music with others online")
end
end
describe "sends group session reminder 3", focus: true do
let(:mail) { ActionMailer::Base.deliveries.last }
before(:each) do
ActionMailer::Base.deliveries.clear
UserMailer.group_session_reminder3(user).deliver_now
end
it "sends exactly one email" do
expect(ActionMailer::Base.deliveries.length).to eq(1)
end
it "has the correct from address" do
mail['from'].to_s.should == UserMailer::DEFAULT_SENDER
end
it "has the correct recipient" do
expect(mail.to).to eq([user.email])
end
it "is multipart" do
expect(mail).to be_multipart
end
it "has the expected subject" do
expect(mail.subject).to include("Dont waste your free 30-day premium gold planget in a session with others now!")
end
it "includes the correct content in the HTML part" do
expect(mail.html_part.body.to_s).to include("When you sign up for JamKazam, we give you a free 30-day premium")
end
it "includes the correct content in the text part" do
expect(mail.text_part.body.to_s).to include("When you sign up for JamKazam, we give you a free 30-day premium")
end
end
describe "sends trial expires reminder 1", focus: true do
let(:mail) { ActionMailer::Base.deliveries.last }
before(:each) do
ActionMailer::Base.deliveries.clear
UserMailer.trial_expires_reminder1(user).deliver_now
end
it "sends exactly one email" do
expect(ActionMailer::Base.deliveries.length).to eq(1)
end
it "has the correct from address" do
mail['from'].to_s.should == UserMailer::DEFAULT_SENDER
end
it "has the correct recipient" do
expect(mail.to).to eq([user.email])
end
it "is multipart" do
expect(mail).to be_multipart
end
it "has the expected subject" do
expect(mail.subject).to include("Your free gold trial has expired, but you have great options to keep playing!")
end
it "includes the correct content in the HTML part" do
expect(mail.html_part.body.to_s).to include("We hope youve enjoyed your 30-day free gold trial with JamKazam")
end
it "includes the correct content in the text part" do
expect(mail.text_part.body.to_s).to include("We hope youve enjoyed your 30-day free gold trial with JamKazam")
end
end
describe "sends trial expires reminder 2", focus: true do
let(:mail) { ActionMailer::Base.deliveries.last }
before(:each) do
ActionMailer::Base.deliveries.clear
UserMailer.trial_expires_reminder2(user).deliver_now
end
it "sends exactly one email" do
expect(ActionMailer::Base.deliveries.length).to eq(1)
end
it "has the correct from address" do
mail['from'].to_s.should == UserMailer::DEFAULT_SENDER
end
it "has the correct recipient" do
expect(mail.to).to eq([user.email])
end
it "is multipart" do
expect(mail).to be_multipart
end
it "has the expected subject" do
expect(mail.subject).to include("Dont forget to check your options to keep playing")
end
it "includes the correct content in the HTML part" do
expect(mail.html_part.body.to_s).to include("Your 30-day free gold trial with JamKazam has expired")
end
it "includes the correct content in the text part" do
expect(mail.text_part.body.to_s).to include("Your 30-day free gold trial with JamKazam has expired")
end
end
describe "sends trial expires reminder 3", focus: true do
let(:mail) { ActionMailer::Base.deliveries.last }
before(:each) do
ActionMailer::Base.deliveries.clear
UserMailer.trial_expires_reminder3(user).deliver_now
end
it "sends exactly one email" do
expect(ActionMailer::Base.deliveries.length).to eq(1)
end
it "has the correct from address" do
mail['from'].to_s.should == UserMailer::DEFAULT_SENDER
end
it "has the correct recipient" do
expect(mail.to).to eq([user.email])
end
it "is multipart" do
expect(mail).to be_multipart
end
it "has the expected subject" do
expect(mail.subject).to include("One last reminder!")
end
it "includes the correct content in the HTML part" do
expect(mail.html_part.body.to_s).to include("Your 30-day free gold trial with JamKazam has expired")
end
it "includes the correct content in the text part" do
expect(mail.text_part.body.to_s).to include("Your 30-day free gold trial with JamKazam has expired")
end
end
end