Set member status to sustainer upon payment
Introduces a state machine for the payment status as well. refs #213
This commit is contained in:
@@ -8,16 +8,18 @@ RSpec.describe BtcpayCheckDonationJob, type: :job do
|
||||
user.donations.create!(
|
||||
donation_method: "btcpay",
|
||||
btcpay_invoice_id: "K4e31MhbLKmr3D7qoNYRd3",
|
||||
paid_at: nil, payment_status: "processing",
|
||||
fiat_amount: 120, fiat_currency: "USD"
|
||||
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
|
||||
uid: user.cn, ou: user.ou, mail: user.email, admin: nil, display_name: nil
|
||||
})
|
||||
allow_any_instance_of(User).to receive(:add_member_status)
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
@@ -65,15 +67,20 @@ RSpec.describe BtcpayCheckDonationJob, type: :job do
|
||||
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
|
||||
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')
|
||||
expect(job['arguments'][3]['params']['user']['_aj_globalid']).to eq(user.to_global_id.to_s)
|
||||
end
|
||||
|
||||
it "does not enqueue itself again" do
|
||||
expect_any_instance_of(described_class).not_to receive(:re_enqueue_job)
|
||||
perform_enqueued_jobs(only: described_class) { job }
|
||||
end
|
||||
|
||||
it "updates the user's member status" do
|
||||
expect_any_instance_of(User).to receive(:add_member_status).with(:sustainer)
|
||||
perform_enqueued_jobs(only: described_class) { job }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user