21f3f72647
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
46 lines
1.4 KiB
Ruby
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
|