Send email confirmation when BTC payment is confirmed
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-02-17 14:17:41 +01:00
parent 18ff3d3f0d
commit f57fff0087
4 changed files with 45 additions and 7 deletions

View File

@@ -6,12 +6,20 @@ RSpec.describe BtcpayCheckDonationJob, type: :job do
let(:donation) do
user.donations.create!(
donation_method: "btcpay", btcpay_invoice_id: "K4e31MhbLKmr3D7qoNYRd3",
donation_method: "btcpay",
btcpay_invoice_id: "K4e31MhbLKmr3D7qoNYRd3",
paid_at: nil, payment_status: "processing",
fiat_amount: 120, fiat_currency: "USD"
)
end
before do
allow_any_instance_of(User).to receive(:ldap_entry).and_return({
uid: user.cn, ou: user.ou, mail: user.email, admin: nil,
display_name: nil
})
end
after(:each) do
clear_enqueued_jobs
clear_performed_jobs
@@ -48,16 +56,24 @@ RSpec.describe BtcpayCheckDonationJob, type: :job do
end
it "updates the donation record" do
perform_enqueued_jobs { job }
perform_enqueued_jobs(only: described_class) { job }
donation.reload
expect(donation.paid_at).not_to be_nil
expect(donation.payment_status).to eq("settled")
end
it "notifies the user via email" do
perform_enqueued_jobs(only: described_class) { job }
expect(enqueued_jobs.size).to eq(1)
job = enqueued_jobs.select{|j| j['job_class'] == "ActionMailer::MailDeliveryJob"}.first
expect(job['arguments'][0]).to eq('NotificationMailer')
expect(job['arguments'][1]).to eq('bitcoin_donation_confirmed')
expect(job['arguments'][3]['params']['user']['_aj_globalid']).to eq('gid://akkounts/User/1')
end
it "does not enqueue itself again" do
expect_any_instance_of(described_class).not_to receive(:re_enqueue_job)
perform_enqueued_jobs { job }
perform_enqueued_jobs(only: described_class) { job }
end
end
end