mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-12-01 12:24:28 +01:00
44 lines
1.5 KiB
Ruby
44 lines
1.5 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# Provides methods to help testing payment schedules
|
||
|
module PaymentScheduleHelper
|
||
|
# Force the payment schedule generation worker to run NOW and check the resulting file generated.
|
||
|
# Delete the file afterwards.
|
||
|
# @param schedule [PaymentSchedule]
|
||
|
def assert_schedule_pdf(schedule)
|
||
|
assert_not_nil schedule, 'Schedule was not created'
|
||
|
|
||
|
generate_schedule_pdf(schedule)
|
||
|
|
||
|
assert File.exist?(schedule.file), 'Schedule PDF was not generated'
|
||
|
|
||
|
File.delete(schedule.file)
|
||
|
end
|
||
|
|
||
|
# @param customer [User]
|
||
|
# @param operator [User]
|
||
|
# @return [PaymentSchedule] saved
|
||
|
def sample_schedule(customer, operator)
|
||
|
plan = plans(:plan_schedulable)
|
||
|
subscription = Subscription.new(plan: plan, statistic_profile_id: customer.statistic_profile, start_at: Time.current)
|
||
|
subscription.save
|
||
|
options = { payment_method: '' }
|
||
|
unless operator.privileged?
|
||
|
options = { payment_method: 'card', payment_id: 'pi_3LpALs2sOmf47Nz91QyFI7nP', payment_type: 'Stripe::PaymentIntent' }
|
||
|
end
|
||
|
schedule = PaymentScheduleService.new.create([subscription], 113_600, customer, operator: operator, **options)
|
||
|
schedule.save
|
||
|
first_item = schedule.ordered_items.first
|
||
|
PaymentScheduleService.new.generate_invoice(first_item, **options)
|
||
|
first_item.update(state: 'paid', payment_method: operator.privileged? ? 'check' : 'card')
|
||
|
schedule
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def generate_schedule_pdf(schedule)
|
||
|
schedule_worker = PaymentScheduleWorker.new
|
||
|
schedule_worker.perform(schedule.id)
|
||
|
end
|
||
|
end
|