mirror of
https://github.com/we-promise/sure.git
synced 2026-05-08 05:04:59 +00:00
* fix: Restore legacy fallback for credit card balance calculation in Enable Banking * test: update test following new behavior * test: keep old test * fix: use absolute value for balance computation
90 lines
3.0 KiB
Ruby
90 lines
3.0 KiB
Ruby
require "test_helper"
|
|
|
|
class EnableBankingAccount::ProcessorTest < ActiveSupport::TestCase
|
|
setup do
|
|
@family = families(:dylan_family)
|
|
@account = accounts(:depository)
|
|
@enable_banking_item = EnableBankingItem.create!(
|
|
family: @family,
|
|
name: "Test EB",
|
|
country_code: "FR",
|
|
application_id: "app_id",
|
|
client_certificate: "cert"
|
|
)
|
|
@enable_banking_account = EnableBankingAccount.create!(
|
|
enable_banking_item: @enable_banking_item,
|
|
name: "Compte courant",
|
|
uid: "hash_abc",
|
|
currency: "EUR",
|
|
current_balance: 1500.00
|
|
)
|
|
AccountProvider.create!(account: @account, provider: @enable_banking_account)
|
|
end
|
|
|
|
test "calls set_current_balance instead of direct account update" do
|
|
EnableBankingAccount::Processor.new(@enable_banking_account).process
|
|
|
|
assert_equal 1500.0, @account.reload.cash_balance
|
|
end
|
|
|
|
test "updates account currency" do
|
|
@enable_banking_account.update!(currency: "USD")
|
|
|
|
EnableBankingAccount::Processor.new(@enable_banking_account).process
|
|
|
|
assert_equal "USD", @account.reload.currency
|
|
end
|
|
|
|
test "does nothing when no linked account" do
|
|
@account.account_providers.destroy_all
|
|
|
|
result = EnableBankingAccount::Processor.new(@enable_banking_account).process
|
|
assert_nil result
|
|
end
|
|
|
|
test "sets CC balance to available_credit when credit_limit is present" do
|
|
cc_account = accounts(:credit_card)
|
|
@enable_banking_account.update!(
|
|
current_balance: 450.00,
|
|
credit_limit: 1000.00
|
|
)
|
|
AccountProvider.find_by(provider: @enable_banking_account)&.destroy
|
|
AccountProvider.create!(account: cc_account, provider: @enable_banking_account)
|
|
|
|
EnableBankingAccount::Processor.new(@enable_banking_account).process
|
|
|
|
assert_equal 550.0, cc_account.reload.cash_balance
|
|
if cc_account.accountable.respond_to?(:available_credit)
|
|
assert_equal 550.0, cc_account.accountable.reload.available_credit
|
|
end
|
|
end
|
|
|
|
test "falls back to stored available_credit when credit_limit is absent" do
|
|
cc_account = accounts(:credit_card)
|
|
cc_account.accountable.update!(available_credit: 1000.0)
|
|
|
|
@enable_banking_account.update!(current_balance: 300.00, credit_limit: nil)
|
|
|
|
AccountProvider.find_by(provider: @enable_banking_account)&.destroy
|
|
AccountProvider.create!(account: cc_account, provider: @enable_banking_account)
|
|
|
|
EnableBankingAccount::Processor.new(@enable_banking_account).process
|
|
|
|
assert_equal 700.0, cc_account.reload.cash_balance
|
|
end
|
|
|
|
test "sets CC balance to raw outstanding when credit_limit is absent" do
|
|
cc_account = accounts(:credit_card)
|
|
cc_account.accountable.update!(available_credit: nil)
|
|
|
|
@enable_banking_account.update!(current_balance: 300.00, credit_limit: nil)
|
|
|
|
AccountProvider.find_by(provider: @enable_banking_account)&.destroy
|
|
AccountProvider.create!(account: cc_account, provider: @enable_banking_account)
|
|
|
|
EnableBankingAccount::Processor.new(@enable_banking_account).process
|
|
|
|
assert_equal 300.0, cc_account.reload.cash_balance
|
|
end
|
|
end
|