notifications tests use reliable test dates

This commit is contained in:
Jérémy Lecour 2019-08-20 08:46:20 +02:00
parent a7010d7689
commit d15ee5b300
1 changed files with 74 additions and 78 deletions

View File

@ -5,64 +5,62 @@ require "test_helper"
class NotificationsMailerTest < ActionMailer::TestCase # rubocop:disable Metrics/ClassLength
test "domain_expires_soon" do
check = create(:check, domain_expires_at: Time.new(2018, 6, 10, 12, 0, 5, "+02:00"))
expiration_date = 8.days.from_now.utc
check = create(:check, domain_expires_at: expiration_date)
notification = build(:notification, interval: 10, recipient: "colin@example.org")
check_notification = build(:check_notification, check: check, notification: notification)
Date.stub :today, Date.new(2018, 6, 2) do
mail = NotificationsMailer.with(check_notification: check_notification).domain_expires_soon
mail = NotificationsMailer.with(check_notification: check_notification).domain_expires_soon
assert_emails 1 do
mail.deliver_now
end
assert_emails 1 do
mail.deliver_now
end
assert_match "domain.fr", mail.subject
assert_match "in 8 days", mail.subject
assert_equal ["colin@example.org"], mail.to
assert_equal [Rails.configuration.chexpire.fetch("mailer_default_from")], mail.from
assert_match "domain.fr", mail.subject
assert_match "in 8 days", mail.subject
assert_equal ["colin@example.org"], mail.to
assert_equal [Rails.configuration.chexpire.fetch("mailer_default_from")], mail.from
parts = [mail.text_part.decode_body, mail.html_part.decode_body]
parts = [mail.text_part.decode_body, mail.html_part.decode_body]
parts.each do |part|
assert_match "domain.fr", part
assert_match "Sun, 10 Jun 2018 10:00:05 +0000", part
assert_match "10 days", part
assert_match "/checks/#{check.id}/edit", part
assert_no_match "comment", part
assert_no_match "vendor", part
end
parts.each do |part|
assert_match "domain.fr", part
assert_match I18n.l(expiration_date, locale: :en), part
assert_match "10 days", part
assert_match "/checks/#{check.id}/edit", part
assert_no_match "comment", part
assert_no_match "vendor", part
end
end
test "domain_expires_soon FR" do
expiration_date = 8.days.from_now.utc
check = create(:check,
domain_expires_at: Time.new(2018, 6, 10, 12, 0, 5, "+02:00"),
domain_expires_at: expiration_date,
user: build(:user, :fr))
notification = build(:notification, interval: 10, recipient: "colin@example.org")
check_notification = build(:check_notification, check: check, notification: notification)
Date.stub :today, Date.new(2018, 6, 2) do
mail = NotificationsMailer.with(check_notification: check_notification).domain_expires_soon
mail = NotificationsMailer.with(check_notification: check_notification).domain_expires_soon
assert_emails 1 do
mail.deliver_now
end
assert_emails 1 do
mail.deliver_now
end
assert_match "domain.fr", mail.subject
assert_match "dans 8 jours", mail.subject
assert_equal ["colin@example.org"], mail.to
assert_equal [Rails.configuration.chexpire.fetch("mailer_default_from")], mail.from
assert_match "domain.fr", mail.subject
assert_match "dans 8 jours", mail.subject
assert_equal ["colin@example.org"], mail.to
assert_equal [Rails.configuration.chexpire.fetch("mailer_default_from")], mail.from
parts = [mail.text_part.decode_body, mail.html_part.decode_body]
parts = [mail.text_part.decode_body, mail.html_part.decode_body]
parts.each do |part|
assert_match "domain.fr", part
assert_match "dim 10 juin 2018 10:00:05 +0000", part
assert_match "10 jours", part
assert_match "/checks/#{check.id}/edit", part
assert_no_match "commentaire", part
assert_no_match "fournisseur", part
end
parts.each do |part|
assert_match "domain.fr", part
assert_match I18n.l(expiration_date, locale: :fr), part
assert_match "10 jours", part
assert_match "/checks/#{check.id}/edit", part
assert_no_match "commentaire", part
assert_no_match "fournisseur", part
end
end
@ -159,66 +157,64 @@ class NotificationsMailerTest < ActionMailer::TestCase # rubocop:disable Metrics
end
test "ssl_expires_soon" do
check = create(:check, :ssl, domain_expires_at: Time.new(2018, 6, 10, 12, 0, 5, "+02:00"))
expiration_date = 8.days.from_now.utc
check = create(:check, :ssl, domain_expires_at: 8.days.from_now)
notification = build(:notification, interval: 10, recipient: "colin@example.org")
check_notification = build(:check_notification, check: check, notification: notification)
Date.stub :today, Date.new(2018, 6, 2) do
mail = NotificationsMailer.with(check_notification: check_notification).ssl_expires_soon
mail = NotificationsMailer.with(check_notification: check_notification).ssl_expires_soon
assert_emails 1 do
mail.deliver_now
end
assert_emails 1 do
mail.deliver_now
end
assert_match "domain.fr", mail.subject
assert_match "SSL", mail.subject
assert_match "in 8 days", mail.subject
assert_equal ["colin@example.org"], mail.to
assert_equal [Rails.configuration.chexpire.fetch("mailer_default_from")], mail.from
assert_match "domain.fr", mail.subject
assert_match "SSL", mail.subject
assert_match "in 8 days", mail.subject
assert_equal ["colin@example.org"], mail.to
assert_equal [Rails.configuration.chexpire.fetch("mailer_default_from")], mail.from
parts = [mail.text_part.decode_body, mail.html_part.decode_body]
parts = [mail.text_part.decode_body, mail.html_part.decode_body]
parts.each do |part|
assert_match "domain.fr", part
assert_match "Sun, 10 Jun 2018 10:00:05 +0000", part
assert_match "10 days", part
assert_match "/checks/#{check.id}/edit", part
assert_no_match "comment", part
assert_no_match "vendor", part
end
parts.each do |part|
assert_match "domain.fr", part
assert_match I18n.l(expiration_date, locale: :en), part
assert_match "10 days", part
assert_match "/checks/#{check.id}/edit", part
assert_no_match "comment", part
assert_no_match "vendor", part
end
end
test "ssl_expires_soon - FR" do
expiration_date = 8.days.from_now.utc
check = create(:check, :ssl,
domain_expires_at: Time.new(2018, 6, 10, 12, 0, 5, "+02:00"),
domain_expires_at: expiration_date,
user: build(:user, :fr))
notification = build(:notification, interval: 10, recipient: "colin@example.org")
check_notification = build(:check_notification, check: check, notification: notification)
Date.stub :today, Date.new(2018, 6, 2) do
mail = NotificationsMailer.with(check_notification: check_notification).ssl_expires_soon
mail = NotificationsMailer.with(check_notification: check_notification).ssl_expires_soon
assert_emails 1 do
mail.deliver_now
end
assert_emails 1 do
mail.deliver_now
end
assert_match "domain.fr", mail.subject
assert_match "SSL", mail.subject
assert_match "dans 8 jours", mail.subject
assert_equal ["colin@example.org"], mail.to
assert_equal [Rails.configuration.chexpire.fetch("mailer_default_from")], mail.from
assert_match "domain.fr", mail.subject
assert_match "SSL", mail.subject
assert_match "dans 8 jours", mail.subject
assert_equal ["colin@example.org"], mail.to
assert_equal [Rails.configuration.chexpire.fetch("mailer_default_from")], mail.from
parts = [mail.text_part.decode_body, mail.html_part.decode_body]
parts = [mail.text_part.decode_body, mail.html_part.decode_body]
parts.each do |part|
assert_match "domain.fr", part
assert_match "dim 10 juin 2018 10:00:05 +0000", part
assert_match "10 jours", part
assert_match "/checks/#{check.id}/edit", part
assert_no_match "commentaire", part
assert_no_match "fournisseur", part
end
parts.each do |part|
assert_match "domain.fr", part
assert_match I18n.l(expiration_date, locale: :fr), part
assert_match "10 jours", part
assert_match "/checks/#{check.id}/edit", part
assert_no_match "commentaire", part
assert_no_match "fournisseur", part
end
end
end