From 9a04eea778f3d4efb2f1b699c800f313d12f0b99 Mon Sep 17 00:00:00 2001 From: Andrew Nesbitt Date: Fri, 24 Jan 2025 16:52:51 +0000 Subject: [PATCH] Add test for expense_email method in MaintainerMailer --- test/mailers/maintainer_mailer_test.rb | 47 ++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/test/mailers/maintainer_mailer_test.rb b/test/mailers/maintainer_mailer_test.rb index 2c9c88e..fcf497e 100644 --- a/test/mailers/maintainer_mailer_test.rb +++ b/test/mailers/maintainer_mailer_test.rb @@ -44,4 +44,51 @@ class MaintainerMailerTest < ActionMailer::TestCase assert_includes email.html_part.body.to_s, "font-family: system-ui" assert_includes email.html_part.body.to_s, "color: #1D1D28" end + + test "expense_email" do + data = {"draftKey" => "123"} + project_allocation = create(:project_allocation) + invitation = Invitation.create!(email: "maintainer@example.com", project_allocation: project_allocation, data: data, member_invitation_id: 123) + maintainer_email = "maintainer@example.com" + package = "example-project" + funders = "Sentry" + amount = "$500.00" + invite_token = "123456" + decline_deadline = (Time.now + 14.days).strftime("%B %d, %Y") + fund = create(:fund) + + # Send the email + email = MaintainerMailer.expense_email( + invitation, + maintainer_email, + package, + funders, + amount, + invite_token, + decline_deadline, + fund + ) + + # Assert email properties + assert_emails 1 do + email.deliver_now + end + + assert_equal ["maintainer@example.com"], email.to + assert_equal ["hello@oscollective.org"], email.from + assert_equal "Payment details for your work maintaining #{package}", email.subject + + # Assert email body contains expected content + assert_includes email.html_part.body.to_s, "Sentry" + assert_includes email.html_part.body.to_s, invite_token + assert_includes email.html_part.body.to_s, decline_deadline + assert_includes email.html_part.body.to_s, 'src="https://funds.ecosyste.ms' + + assert_includes email.text_part.body.to_s, "Sentry" + assert_includes email.text_part.body.to_s, invite_token + assert_includes email.text_part.body.to_s, decline_deadline + + assert_includes email.html_part.body.to_s, "font-family: system-ui" + assert_includes email.html_part.body.to_s, "color: #1D1D28" + end end \ No newline at end of file