Skip to content

Commit

Permalink
Update specs.
Browse files Browse the repository at this point in the history
  • Loading branch information
CraigJZ committed Nov 6, 2024
1 parent f3c89a1 commit 8f10b48
Show file tree
Hide file tree
Showing 4 changed files with 119 additions and 90 deletions.
1 change: 1 addition & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ Metrics/ClassLength:
- 'test/system/sections_test.rb'
- 'test/integration/import_reporting_emails_test.rb'
- 'test/integration/worker_reporting_emails_test.rb'
- 'test/integration/email_delivery_config_test.rb'
Metrics/CyclomaticComplexity:
Exclude:
- 'app/controllers/sections_controller.rb'
Expand Down
90 changes: 55 additions & 35 deletions test/integration/email_delivery_config_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@ class EmailDeliveryConfigTest < ActionDispatch::IntegrationTest
Sidekiq::Worker.clear_all
Enrollchat::Application.load_tasks
@settings = settings(:one)
Time.zone = "Eastern Time (US & Canada)"
end

teardown do
Sidekiq::Worker.clear_all
Rake::Task.clear
Time.zone = "UTC"
end

test "daily digest worker is performed if email delivery config is 'on'" do
Expand All @@ -34,89 +32,111 @@ class EmailDeliveryConfigTest < ActionDispatch::IntegrationTest

test "daily digest worker is not performed if email delivery config is 'scheduled' and fall delivery_window has ended" do
@settings.update(email_delivery: "scheduled")
travel_to Time.zone.local(2018, 10, 15, 1, 4, 44) do
Rake::Task['daily_digests:send_emails'].invoke
assert_equal 0, DigestWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 10, 15, 1, 4, 44) do
Rake::Task['daily_digests:send_emails'].invoke
assert_equal 0, DigestWorker.jobs.size
end
end
end

test "daily digest worker is not performed if email delivery config is 'scheduled' and spring delivery_window has ended" do
@settings.update(email_delivery: "scheduled")
travel_to Time.zone.local(2018, 2, 13, 1, 4, 44) do
Rake::Task['daily_digests:send_emails'].invoke
assert_equal 0, DigestWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 2, 13, 1, 4, 44) do
Rake::Task['daily_digests:send_emails'].invoke
assert_equal 0, DigestWorker.jobs.size
end
end
end

test "daily digest worker is performed if email delivery config is 'scheduled' and fall delivery_window is true" do
@settings.update(email_delivery: "scheduled")
travel_to Time.zone.local(2018, 4, 15, 1, 4, 44) do
Rake::Task['daily_digests:send_emails'].invoke
assert_equal 1, DigestWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 4, 15, 1, 4, 44) do
Rake::Task['daily_digests:send_emails'].invoke
assert_equal 1, DigestWorker.jobs.size
end
end
end

test "daily digest worker is performed if email delivery config is 'scheduled' and spring delivery_window is true" do
@settings.update(email_delivery: "scheduled")
travel_to Time.zone.local(2018, 1, 15, 1, 4, 44) do
Rake::Task['daily_digests:send_emails'].invoke
assert_equal 1, DigestWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 1, 15, 1, 4, 44) do
Rake::Task['daily_digests:send_emails'].invoke
assert_equal 1, DigestWorker.jobs.size
end
end
end

test "report worker is not performed if email delivery config is 'off'" do
@settings.update(email_delivery: "off")
travel_to Time.zone.local(2018, 8, 16, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 0, ReportWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 8, 16, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 0, ReportWorker.jobs.size
end
end
end

test "report worker is performed if email delivery config is 'on' and it is Thursday" do
@settings.update(email_delivery: "on")
travel_to Time.zone.local(2018, 8, 16, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 1, ReportWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 8, 16, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 1, ReportWorker.jobs.size
end
end
end

test "report worker is not performed if email delivery config is 'on' and it is not Thursday" do
@settings.update(email_delivery: "on")
travel_to Time.zone.local(2018, 10, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 0, ReportWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 10, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 0, ReportWorker.jobs.size
end
end
end

test "report worker is performed if email delivery config is 'scheduled', it is Thursday and spring delivery window is true" do
@settings.update(email_delivery: "scheduled")
travel_to Time.zone.local(2018, 1, 18, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 1, ReportWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 1, 18, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 1, ReportWorker.jobs.size
end
end
end

test "report worker is performed if email delivery config is 'scheduled', it is Thursday and fall delivery window is true" do
@settings.update(email_delivery: "scheduled")
travel_to Time.zone.local(2018, 4, 19, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 1, ReportWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 4, 19, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 1, ReportWorker.jobs.size
end
end
end

test "report worker is not performed if email delivery config is 'scheduled', it is Thursday and fall delivery window has ended" do
@settings.update(email_delivery: "scheduled")
travel_to Time.zone.local(2018, 10, 18, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 0, ReportWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 10, 18, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 0, ReportWorker.jobs.size
end
end
end

test "report worker is not performed if email delivery config is 'scheduled', it is Thursday and spring delivery window has ended" do
@settings.update(email_delivery: "scheduled")
travel_to Time.zone.local(2018, 2, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 0, ReportWorker.jobs.size
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 2, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
assert_equal 0, ReportWorker.jobs.size
end
end
end
end
26 changes: 14 additions & 12 deletions test/integration/scheduler_reporting_emails_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,33 @@ class SchedulerReportingEmailsTest < ActionDispatch::IntegrationTest
setup do
Rake::Task.clear
Enrollchat::Application.load_tasks
Time.zone = "Eastern Time (US & Canada)"
end

teardown do
Rake::Task.clear
Time.zone = "UTC"
end

# schedule old term purge rake task
test "schedule old term purge email is generated" do
travel_to Time.zone.local(2022, 1, 10, 10, 4, 44) do
assert_emails 1 do
Rake::Task['scheduler:schedule_old_term_purge'].invoke
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2022, 1, 10, 10, 4, 44) do
assert_emails 1 do
Rake::Task['scheduler:schedule_old_term_purge'].invoke
end
end
end
end

test "schedule old term purge email content" do
travel_to Time.zone.local(2022, 1, 10, 10, 4, 44) do
Rake::Task['scheduler:schedule_old_term_purge'].invoke
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2022, 1, 10, 10, 4, 44) do
Rake::Task['scheduler:schedule_old_term_purge'].invoke
end
email = ActionMailer::Base.deliveries.last
assert_equal ["[email protected]"], email.from
assert_equal ["[email protected]"], email.to
assert_equal 'Terms Marked for Deletion (Triggered in test)', email.subject
assert email.body.to_s.include?("<h1>Terms marked for deletion</h1><p>201810</p><p>All sections from these terms will be removed from the system in 30 days.</p>")
end
email = ActionMailer::Base.deliveries.last
assert_equal ["[email protected]"], email.from
assert_equal ["[email protected]"], email.to
assert_equal 'Terms Marked for Deletion (Triggered in test)', email.subject
assert email.body.to_s.include?("<h1>Terms marked for deletion</h1><p>201810</p><p>All sections from these terms will be removed from the system in 30 days.</p>")
end
end
92 changes: 49 additions & 43 deletions test/integration/worker_reporting_emails_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@ class WorkerReportingEmailsTest < ActionDispatch::IntegrationTest
Enrollchat::Application.load_tasks
@settings = settings(:one)
@settings.update(email_delivery: 'on')
Time.zone = "Eastern Time (US & Canada)"
end

teardown do
Sidekiq::Worker.clear_all
Rake::Task.clear
Time.zone = "UTC"
end

# Daily digest worker
Expand Down Expand Up @@ -70,64 +68,72 @@ class WorkerReportingEmailsTest < ActionDispatch::IntegrationTest

# Weekly report worker
test "Weekly report emails are generated" do
travel_to Time.zone.local(2018, 11, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
Sidekiq::Worker.drain_all
assert_emails User.wanting_report.count + 1
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 11, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
Sidekiq::Worker.drain_all
assert_emails User.wanting_report.count + 1
end
end
end

test "'Weekly Report Executed' email content" do
recipient = users(:one)
recipient_two = users(:two)
recipient_three = users(:three)
travel_to Time.zone.local(2018, 11, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
Sidekiq::Worker.drain_all
email = ActionMailer::Base.deliveries.last
assert_equal ["[email protected]"], email.from
assert_equal ["[email protected]"], email.to
assert_equal 'EnrollChat Report Task Executed (Triggered in test)', email.subject
assert email.body.to_s.include?("<h1>EnrollChat Weekly Report Sent</h1>")
assert email.body.to_s.include?("<p>Reports sent to:</p>")
assert email.body.to_s.include?("<ul><li>#{recipient.full_name} (#{recipient.email})</li><li>#{recipient_two.full_name} (#{recipient_two.email})</li><li>#{recipient_three.full_name} (#{recipient_three.email})</li></ul>")
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 11, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
Sidekiq::Worker.drain_all
email = ActionMailer::Base.deliveries.last
assert_equal ["[email protected]"], email.from
assert_equal ["[email protected]"], email.to
assert_equal 'EnrollChat Report Task Executed (Triggered in test)', email.subject
assert email.body.to_s.include?("<h1>EnrollChat Weekly Report Sent</h1>")
assert email.body.to_s.include?("<p>Reports sent to:</p>")
assert email.body.to_s.include?("<ul><li>#{recipient.full_name} (#{recipient.email})</li><li>#{recipient_two.full_name} (#{recipient_two.email})</li><li>#{recipient_three.full_name} (#{recipient_three.email})</li></ul>")
end
end
end

test "EnrollChat Report email standard content" do
term = @settings.current_term
travel_to Time.zone.local(2018, 11, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
Sidekiq::Worker.drain_all
emails = ActionMailer::Base.deliveries[0..2]
emails.each do |email|
assert_equal ["[email protected]"], email.from
assert_equal ["[email protected]"], email.to
assert_equal 'EnrollChat Report (Triggered in test)', email.subject
assert email.body.to_s.include?("<h1>EnrollChat Weekly Report</h1>")
assert email.body.to_s.include?("<h3>Information for #{term_in_words(term)}</h3>")
assert email.body.to_s.include?("<p>EnrollChat provides you with up-to-date enrollment information for the current enrollment term. Log in to gather information on each class, including whether there has been an increase or decrease in enrollment over the previous reporting period. Both the Dean's Office and you have access to this data and should use EnrollChat to regularly communicate about specific courses.<p>")
assert email.body.to_s.include?("<h2>Sections With Comments</h2>")
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 11, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
Sidekiq::Worker.drain_all
emails = ActionMailer::Base.deliveries[0..2]
emails.each do |email|
assert_equal ["[email protected]"], email.from
assert_equal ["[email protected]"], email.to
assert_equal 'EnrollChat Report (Triggered in test)', email.subject
assert email.body.to_s.include?("<h1>EnrollChat Weekly Report</h1>")
assert email.body.to_s.include?("<h3>Information for #{term_in_words(term)}</h3>")
assert email.body.to_s.include?("<p>EnrollChat provides you with up-to-date enrollment information for the current enrollment term. Log in to gather information on each class, including whether there has been an increase or decrease in enrollment over the previous reporting period. Both the Dean's Office and you have access to this data and should use EnrollChat to regularly communicate about specific courses.<p>")
assert email.body.to_s.include?("<h2>Sections With Comments</h2>")
end
end
end
end

test "EnrollChat Report recipient specific content" do
travel_to Time.zone.local(2018, 11, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
Sidekiq::Worker.drain_all
emails = ActionMailer::Base.deliveries[0..2]
assert emails[0].body.to_s.include?("<td>BIS</td>")
assert emails[0].body.to_s.include?("<td>ENGL</td>")
assert emails[0].body.to_s.include?("<td>SINT</td>")
assert emails[0].body.to_s.include?("<td>CRIM</td>")
assert emails[1].body.to_s.include?("<td>SINT</td>")
assert emails[1].body.to_s.include?("<td>CRIM</td>")
assert emails[1].body.to_s.include?("<td>PHIL</td>")
assert_not emails[2].body.to_s.include?("<td>BIS</td>")
assert_not emails[2].body.to_s.include?("<td>ENGL</td>")
assert_not emails[2].body.to_s.include?("<td>SINT</td>")
assert_not emails[2].body.to_s.include?("<td>CRIM</td>")
Time.use_zone("Eastern Time (US & Canada)") do
travel_to Time.zone.local(2018, 11, 15, 1, 4, 44) do
Rake::Task['weekly_reports:send_emails'].invoke
Sidekiq::Worker.drain_all
emails = ActionMailer::Base.deliveries[0..2]
assert emails[0].body.to_s.include?("<td>BIS</td>")
assert emails[0].body.to_s.include?("<td>ENGL</td>")
assert emails[0].body.to_s.include?("<td>SINT</td>")
assert emails[0].body.to_s.include?("<td>CRIM</td>")
assert emails[1].body.to_s.include?("<td>SINT</td>")
assert emails[1].body.to_s.include?("<td>CRIM</td>")
assert emails[1].body.to_s.include?("<td>PHIL</td>")
assert_not emails[2].body.to_s.include?("<td>BIS</td>")
assert_not emails[2].body.to_s.include?("<td>ENGL</td>")
assert_not emails[2].body.to_s.include?("<td>SINT</td>")
assert_not emails[2].body.to_s.include?("<td>CRIM</td>")
end
end
end
end

0 comments on commit 8f10b48

Please sign in to comment.