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

374 lines
13 KiB
Ruby

=begin
# verifies that teacher directed emails go to the right location
require "spec_helper"
# https://jamkazam.atlassian.net/browse/VRFS-4128#add-comment
# * *teacher-always* : the teacher always gets this email
# * *school-over-teacher*: if there is a school, then the school gets the email if it has the scheduling communication pref set to true; otherwise, just teacher
# * *school-and-teacher*: if there is a school, send to both school and teacher; otherwise, just teacher
describe "TeacherLessonEmails" do
def school_over_teacher
if @noSchool
mail.to.should eql [teacher.email]
elsif @schoolDirectComm
mail.to.should eql [teacher.email]
else
mail.to.should eql [school.communication_email]
end
end
def teacher_always
mail.to.should eql [teacher.email]
end
def student_always
mail.to.should eql [user.email]
end
def school_and_teacher
if @noSchool
mail.to.should eql [teacher.email]
elsif @schoolDirectComm
mail.to.should eql [teacher.email]
else
mail.to.should eql [school.communication_email, teacher.email]
end
end
before(:each) {
UserMailer.deliveries.clear
@noSchool = @schooDirectComm = @schoolSchedulingComm = false
}
# lessons with no school affiliation
describe "no-school" do
let(:user) { FactoryGirl.create(:user) }
let(:teacher) { FactoryGirl.create(:teacher_user) }
let(:lesson) { normal_lesson(user, teacher) }
let(:mail) { UserMailer.deliveries[-1] }
before(:each) {
@noSchool = true
}
it "teacher_lesson_request" do
UserMailer.teacher_lesson_request(lesson.lesson_booking).deliver_now
school_over_teacher
end
it "teacher_lesson_accepted" do
UserMailer.teacher_lesson_accepted(lesson, "come along now and teach", lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_and_teacher
end
it "teacher_lesson_update_all" do
UserMailer.teacher_lesson_update_all(lesson, "come along now and teach", lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_and_teacher
end
it "teacher_lesson_counter" do
UserMailer.teacher_lesson_counter(lesson, lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_over_teacher
end
it "teacher_lesson_normal_done" do
UserMailer.teacher_lesson_normal_done(lesson).deliver_now
school_over_teacher
end
it "teacher_lesson_completed" do
UserMailer.teacher_lesson_completed(lesson).deliver_now
school_and_teacher
end
it "teacher_test_drive_no_bill" do
UserMailer.teacher_test_drive_no_bill(lesson).deliver_now
school_and_teacher
end
it "teacher_lesson_normal_no_bill" do
UserMailer.teacher_lesson_normal_no_bill(lesson).deliver_now
school_and_teacher
end
it "teacher_unable_charge_monthly" do
pending "insufficient test setup"
paid = monthly_lesson(user, teacher, {accept:true, finish: true})
paid.reload
UserMailer.teacher_unable_charge_monthly(paid.lesson_package_purchase).deliver_now
school_over_teacher
end
it "teacher_lesson_monthly_charged" do
pending "insufficient test setup"
paid = monthly_lesson(user, teacher, {accept:true, finish: true})
paid.reload
UserMailer.teacher_lesson_monthly_charged(paid.lesson_package_purchase).deliver_now
school_over_teacher
end
it "teacher_distribution_done" do
teacher_payment = FactoryGirl.create(:teacher_payment, teacher: teacher, teacher_distribution: FactoryGirl.create(:teacher_distribution, lesson_session: lesson))
UserMailer.teacher_distribution_done(teacher_payment).deliver_now
school_over_teacher
end
it "teacher_distribution_fail" do
teacher_payment = FactoryGirl.create(:teacher_payment, teacher: teacher, teacher_distribution: FactoryGirl.create(:teacher_distribution, lesson_session: lesson))
UserMailer.teacher_distribution_fail(teacher_payment).deliver_now
school_over_teacher
end
it "teacher_lesson_booking_canceled" do
canceled_lesson = normal_lesson(user, teacher, {cancel: true})
UserMailer.teacher_lesson_booking_canceled(canceled_lesson.lesson_booking, "Sorry I can't teach anymore!").deliver_now
school_and_teacher
end
it "teacher_lesson_canceled" do
canceled_lesson = normal_lesson(user, teacher, {cancel: true})
UserMailer.teacher_lesson_canceled(canceled_lesson, "Sorry I can't teach anymore!").deliver_now
school_and_teacher
end
it "lesson_chat" do
msg = ChatMessage.create(user, nil, "nathuntoehun ", "lesson", "abc", teacher, lesson)
UserMailer.lesson_chat(msg).deliver_now
end
it "teacher_counter_reminder" do
UserMailer.teacher_counter_reminder(lesson).deliver_now
school_over_teacher
end
it "lesson_starting_soon_teacher" do
UserMailer.lesson_starting_soon_teacher(lesson).deliver_now
teacher_always
end
end
# lessons with school affiliation, but teacher gets all communication
describe "school-but-direct-comm" do
before(:each) {
@schoolDirectComm = true
}
let(:school) { FactoryGirl.create(:school, scheduling_communication: School::SCHEDULING_COMM_TEACHER) }
let(:user) { FactoryGirl.create(:user) }
let(:teacher_obj) { FactoryGirl.create(:teacher, school: school) }
let(:teacher) { FactoryGirl.create(:user, teacher: teacher_obj) }
let(:lesson) { normal_lesson(user, teacher) }
let(:mail) { UserMailer.deliveries[-1] }
it "teacher_lesson_request" do
UserMailer.teacher_lesson_request(lesson.lesson_booking).deliver_now
school_over_teacher
end
it "teacher_lesson_accepted" do
UserMailer.teacher_lesson_accepted(lesson, "come along now and teach", lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_and_teacher
end
it "teacher_lesson_update_all" do
UserMailer.teacher_lesson_update_all(lesson, "come along now and teach", lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_and_teacher
end
it "teacher_lesson_counter" do
UserMailer.teacher_lesson_counter(lesson, lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_over_teacher
end
it "teacher_lesson_normal_done" do
UserMailer.teacher_lesson_normal_done(lesson).deliver_now
school_over_teacher
end
it "teacher_lesson_completed" do
UserMailer.teacher_lesson_completed(lesson).deliver_now
school_and_teacher
end
it "teacher_test_drive_no_bill" do
UserMailer.teacher_test_drive_no_bill(lesson).deliver_now
school_and_teacher
end
it "teacher_lesson_normal_no_bill" do
UserMailer.teacher_lesson_normal_no_bill(lesson).deliver_now
school_and_teacher
end
it "teacher_unable_charge_monthly" do
pending "insufficient test setup"
paid = monthly_lesson(user, teacher, {accept:true, finish: true})
paid.reload
UserMailer.teacher_unable_charge_monthly(paid.lesson_package_purchase).deliver_now
school_over_teacher
end
it "teacher_lesson_monthly_charged" do
pending "insufficient test setup"
paid = monthly_lesson(user, teacher, {accept:true, finish: true})
paid.reload
UserMailer.teacher_lesson_monthly_charged(paid.lesson_package_purchase).deliver_now
school_over_teacher
end
it "teacher_distribution_done" do
teacher_payment = FactoryGirl.create(:teacher_payment, teacher: teacher, teacher_distribution: FactoryGirl.create(:teacher_distribution, lesson_session: lesson))
UserMailer.teacher_distribution_done(teacher_payment).deliver_now
school_over_teacher
end
it "teacher_distribution_fail" do
teacher_payment = FactoryGirl.create(:teacher_payment, teacher: teacher, teacher_distribution: FactoryGirl.create(:teacher_distribution, lesson_session: lesson))
UserMailer.teacher_distribution_fail(teacher_payment).deliver_now
school_over_teacher
end
it "teacher_lesson_booking_canceled" do
canceled_lesson = normal_lesson(user, teacher, {cancel: true})
UserMailer.teacher_lesson_booking_canceled(canceled_lesson.lesson_booking, "Sorry I can't teach anymore!").deliver_now
school_and_teacher
end
it "teacher_lesson_canceled" do
canceled_lesson = normal_lesson(user, teacher, {cancel: true})
UserMailer.teacher_lesson_canceled(canceled_lesson, "Sorry I can't teach anymore!").deliver_now
school_and_teacher
end
it "lesson_chat" do
msg = ChatMessage.create(user, nil, "nathuntoehun ", "lesson", "abc", teacher, lesson)
UserMailer.lesson_chat(msg).deliver_now
end
it "teacher_counter_reminder" do
UserMailer.teacher_counter_reminder(lesson).deliver_now
school_over_teacher
end
it "lesson_starting_soon_teacher" do
UserMailer.lesson_starting_soon_teacher(lesson).deliver_now
teacher_always
end
end
# lessons with school affiliation, and they want communication
describe "school-with-scheduling-comm" do
before(:each) {
@schoolSchedulingComm = true
}
let(:school) { FactoryGirl.create(:school, scheduling_communication: School::SCHEDULING_COMM_SCHOOL) }
let(:user) { FactoryGirl.create(:user) }
let(:teacher_obj) { FactoryGirl.create(:teacher, school: school) }
let(:teacher) { FactoryGirl.create(:user, teacher: teacher_obj) }
let(:lesson) { normal_lesson(user, teacher) }
let(:mail) { UserMailer.deliveries[-1] }
it "teacher_lesson_request" do
UserMailer.teacher_lesson_request(lesson.lesson_booking).deliver_now
school_over_teacher
end
it "teacher_lesson_accepted" do
UserMailer.teacher_lesson_accepted(lesson, "come along now and teach", lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_and_teacher
end
it "teacher_lesson_update_all" do
UserMailer.teacher_lesson_update_all(lesson, "come along now and teach", lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_and_teacher
end
it "teacher_lesson_counter" do
UserMailer.teacher_lesson_counter(lesson, lesson.lesson_booking.lesson_booking_slots[0]).deliver_now
school_over_teacher
end
it "teacher_lesson_normal_done" do
UserMailer.teacher_lesson_normal_done(lesson).deliver_now
school_over_teacher
end
it "teacher_lesson_completed" do
UserMailer.teacher_lesson_completed(lesson).deliver_now
school_and_teacher
end
it "teacher_test_drive_no_bill" do
UserMailer.teacher_test_drive_no_bill(lesson).deliver_now
school_and_teacher
end
it "teacher_lesson_normal_no_bill" do
UserMailer.teacher_lesson_normal_no_bill(lesson).deliver_now
school_and_teacher
end
it "teacher_unable_charge_monthly" do
pending "insufficient test setup"
paid = monthly_lesson(user, teacher, {accept:true, finish: true})
paid.reload
UserMailer.teacher_unable_charge_monthly(paid.lesson_package_purchase).deliver_now
school_over_teacher
end
it "teacher_lesson_monthly_charged" do
pending "insufficient test setup"
paid = monthly_lesson(user, teacher, {accept:true, finish: true})
paid.reload
UserMailer.teacher_lesson_monthly_charged(paid.lesson_package_purchase).deliver_now
school_over_teacher
end
it "teacher_distribution_done" do
teacher_payment = FactoryGirl.create(:teacher_payment, teacher: teacher, teacher_distribution: FactoryGirl.create(:teacher_distribution, lesson_session: lesson))
UserMailer.teacher_distribution_done(teacher_payment).deliver_now
school_over_teacher
end
it "teacher_distribution_fail" do
teacher_payment = FactoryGirl.create(:teacher_payment, teacher: teacher, teacher_distribution: FactoryGirl.create(:teacher_distribution, lesson_session: lesson))
UserMailer.teacher_distribution_fail(teacher_payment).deliver_now
school_over_teacher
end
it "teacher_lesson_booking_canceled" do
canceled_lesson = normal_lesson(user, teacher, {cancel: true})
UserMailer.teacher_lesson_booking_canceled(canceled_lesson.lesson_booking, "Sorry I can't teach anymore!").deliver_now
school_and_teacher
end
it "teacher_lesson_canceled" do
canceled_lesson = normal_lesson(user, teacher, {cancel: true})
UserMailer.teacher_lesson_canceled(canceled_lesson, "Sorry I can't teach anymore!").deliver_now
school_and_teacher
end
it "lesson_chat" do
msg = ChatMessage.create(user, nil, "nathuntoehun ", "lesson", "abc", teacher, lesson)
UserMailer.lesson_chat(msg).deliver_now
end
it "teacher_counter_reminder" do
UserMailer.teacher_counter_reminder(lesson).deliver_now
school_over_teacher
end
it "lesson_starting_soon_teacher" do
UserMailer.lesson_starting_soon_teacher(lesson).deliver_now
teacher_always
end
end
end
=end