Files
tradon/modules/trade_finance/tests/test_module.py
AzureAD\SylvainDUVERNAY 181de17b89 Trade Finance + Other changes
2026-05-25 11:17:18 +02:00

118 lines
4.1 KiB
Python

# This file is part of Tradon. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from datetime import date
from decimal import Decimal
from trytond.exceptions import UserError
from trytond.modules.currency.tests import create_currency
from trytond.pool import Pool
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
class TradeFinanceTestCase(ModuleTestCase):
'Test Trade Finance module'
module = 'trade_finance'
def create_facility(self):
pool = Pool()
Bank = pool.get('bank')
Facility = pool.get('trade_finance.facility')
Party = pool.get('party.party')
currency = create_currency('USD')
party = Party(name='Test Bank')
party.save()
bank = Bank(party=party)
bank.save()
facility = Facility(
name='Test Facility',
tfe=bank,
currency=currency,
commitment_status='committed',
date_from=date(2026, 1, 1),
date_to=date(2026, 12, 31))
facility.save()
return facility, currency
@with_transaction()
def test_sublimit_inherits_currency_and_dates(self):
'Test sublimit inherits currency and dates from parent'
pool = Pool()
Limit = pool.get('trade_finance.facility_limit')
facility, currency = self.create_facility()
root, = Limit.create([{
'facility': facility.id,
'name': 'Global limit',
'currency': currency.id,
'amount': Decimal('100.00'),
'date_from': date(2026, 1, 1),
'date_to': date(2026, 12, 31),
}])
child, = Limit.create([{
'parent': root.id,
'name': 'Trading limit',
'amount': Decimal('50.00'),
}])
self.assertEqual(child.facility, facility)
self.assertEqual(child.currency, currency)
self.assertEqual(child.date_from, root.date_from)
self.assertEqual(child.date_to, root.date_to)
@with_transaction()
def test_sublimit_dates_must_stay_within_parent(self):
'Test sublimit dates stay within parent dates'
pool = Pool()
Limit = pool.get('trade_finance.facility_limit')
facility, currency = self.create_facility()
root, = Limit.create([{
'facility': facility.id,
'name': 'Global limit',
'currency': currency.id,
'amount': Decimal('100.00'),
'date_from': date(2026, 1, 1),
'date_to': date(2026, 12, 31),
}])
with self.assertRaises(UserError):
Limit.create([{
'parent': root.id,
'name': 'Late limit',
'amount': Decimal('50.00'),
'date_from': date(2026, 1, 1),
'date_to': date(2027, 1, 1),
}])
@with_transaction()
def test_currency_change_cascades_to_sublimits(self):
'Test root currency changes cascade to sublimits'
pool = Pool()
Limit = pool.get('trade_finance.facility_limit')
facility, currency = self.create_facility()
other_currency = create_currency('EUR')
root, = Limit.create([{
'facility': facility.id,
'name': 'Global limit',
'currency': currency.id,
'amount': Decimal('100.00'),
'date_from': date(2026, 1, 1),
'date_to': date(2026, 12, 31),
}])
child, = Limit.create([{
'parent': root.id,
'name': 'Trading limit',
'amount': Decimal('50.00'),
}])
Limit.write([root], {'currency': other_currency.id})
child = Limit(child.id)
self.assertEqual(child.currency, other_currency)
del ModuleTestCase