Files
fizzy/test/mailers/notification/bundle_mailer_test.rb
T
Jeremy Daer 21f3f72647 Immediate avatar and embed variants
Process variants synchronously on attachment to close the window between
image upload and variant availability, guaranteeing that we won't have
lazy variant processing attempts in GET requests.

Tradeoff is that we do variant processing in upload requests, which is
actually desirable. We're working with images that should take
milliseconds to resize given that we'll already have the file on hand.

References https://github.com/rails/rails/pull/51951
2025-12-04 23:54:37 -08:00

46 lines
1.4 KiB
Ruby

require "test_helper"
class Notification::BundleMailerTest < ActionMailer::TestCase
setup do
@user = users(:david)
@bundle = Notification::Bundle.create!(
user: @user,
starts_at: 1.hour.ago,
ends_at: 1.hour.from_now
)
end
test "renders avatar with initials in span when avatar is not attached" do
create_notification(@user)
email = Notification::BundleMailer.notification(@bundle)
assert_match /<span[^>]*class="avatar"[^>]*>/, email.html_part.body.to_s
assert_match /#{@user.initials}/, email.html_part.body.to_s
assert_match /style="background-color: #[A-F0-9]{6};?"/, email.html_part.body.to_s
end
test "renders avatar with external image URL when avatar is attached" do
blob = ActiveStorage::Blob.create_and_upload!(
io: File.open(Rails.root.join("test", "fixtures", "files", "avatar.png")),
filename: "avatar.png",
content_type: "image/png"
)
@user.avatar.attach(blob)
create_notification(@user)
email = Notification::BundleMailer.notification(@bundle)
assert_match /<img[^>]*class="avatar"[^>]*>/, email.html_part.body.to_s
assert_match /<img[^>]*class="avatar"[^>]*src="[^"]*"/, email.html_part.body.to_s
assert_match /alt="#{@user.name}"/, email.html_part.body.to_s
end
private
def create_notification(user)
Notification.create!(user: user, creator: user, source: events(:logo_published), created_at: 30.minutes.ago)
end
end