Files
plantillas-proyectos/backend/tests/unit/invoices/test_currency_conversion_imports.py
AlexeerCT b750c35522 Add backend test job to CI workflow
- Introduced a new job in the CI workflow to run backend tests before the build process.
- Configured Python environment and installed dependencies from the backend requirements.
- Added a check for the TEST_DATABASE_URL secret to ensure it is defined before running tests.
- The test job must pass for the build job to execute, enhancing the reliability of the CI pipeline.
2026-03-24 12:33:21 -05:00

73 lines
2.3 KiB
Python

from decimal import Decimal
from types import SimpleNamespace
from api.v1.modules.a76.invoices.models import Currency
from api.v1.modules.a76.invoices.imports.process.sub_process.assing_values_def_mex import (
assign_values_iva_lines,
)
def _mk_line(qty: str, capture: str):
return SimpleNamespace(
quantity=SimpleNamespace(quantity=Decimal(qty)),
financial=SimpleNamespace(
unit_cost_capture=Decimal(capture),
unit_cost_usd=None,
unit_cost_mxn=None,
unit_cost_mc=None,
sub_import_value_usd=None,
sub_import_value_mxn=None,
sub_import_value_mc=None,
vat_usd=None,
vat_mxn=None,
vat_mc=None,
value_usd=None,
value_mxn=None,
value_mc=None,
),
)
def _mk_invoice(currency: Currency):
return SimpleNamespace(
financials=SimpleNamespace(
currency=currency,
exchange_rate=Decimal("17.25"),
exchange_rate_mm=Decimal("1.10"),
iva_factor="16",
)
)
def test_assign_values_iva_lines_currency_me():
invoice = _mk_invoice(Currency.FOREIGN)
line = _mk_line("10", "2")
assign_values_iva_lines(invoice, [line])
assert line.financial.sub_import_value_usd == Decimal("20")
assert line.financial.vat_usd == Decimal("3.2")
assert line.financial.value_usd == Decimal("23.2")
assert line.financial.unit_cost_mxn == Decimal("34.50")
def test_assign_values_iva_lines_currency_mn():
invoice = _mk_invoice(Currency.LOCAL)
line = _mk_line("5", "100")
assign_values_iva_lines(invoice, [line])
assert line.financial.sub_import_value_mxn == Decimal("500")
assert line.financial.vat_mxn == Decimal("80")
assert line.financial.value_mxn == Decimal("580")
assert line.financial.unit_cost_usd == Decimal("5.797101449275362318840579710")
def test_assign_values_iva_lines_currency_mc():
invoice = _mk_invoice(Currency.MANUAL)
line = _mk_line("4", "3")
assign_values_iva_lines(invoice, [line])
assert line.financial.sub_import_value_mc == Decimal("12")
assert line.financial.vat_mc == Decimal("1.92")
assert line.financial.value_mc == Decimal("13.92")
assert line.financial.unit_cost_usd == Decimal("3.30")