- 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.
65 lines
2.7 KiB
Python
65 lines
2.7 KiB
Python
from decimal import Decimal
|
|
|
|
from api.v1.modules.a24.balance_movements.models import BalanceMovement, MovementType
|
|
from api.v1.modules.a76.invoices.imports.process import main_process as import_main
|
|
from tests.fixtures.builders import (
|
|
create_business_catalogs,
|
|
create_import_invoice_with_line,
|
|
ensure_reference_data,
|
|
ensure_tenant_company,
|
|
)
|
|
|
|
|
|
def _patch_import_pipeline(monkeypatch, import_line):
|
|
monkeypatch.setattr(import_main, "pre_validators", lambda *args, **kwargs: [import_line])
|
|
monkeypatch.setattr(import_main, "review_classes", lambda *args, **kwargs: None)
|
|
monkeypatch.setattr(import_main, "review_exchange_rate", lambda *args, **kwargs: None)
|
|
monkeypatch.setattr(import_main, "review_weights_kgs", lambda *args, **kwargs: None)
|
|
monkeypatch.setattr(import_main, "review_weights_lbs", lambda *args, **kwargs: None)
|
|
monkeypatch.setattr(import_main, "_validate_sisimp_limits", lambda *args, **kwargs: None)
|
|
monkeypatch.setattr(import_main, "_validate_lines", lambda *args, **kwargs: ([], {}))
|
|
|
|
|
|
def test_process_import_endpoint_creates_balance_entries(client, db_session, monkeypatch):
|
|
ensure_reference_data(db_session)
|
|
ensure_tenant_company(db_session, tenant_id=1, company_id=1)
|
|
catalogs = create_business_catalogs(db_session, tenant_id=1, company_id=1)
|
|
invoice, line = create_import_invoice_with_line(
|
|
db_session, 1, 1, catalogs, invoice_type="TEM", invoice_number="IMP-INT-01", qty=Decimal("7")
|
|
)
|
|
_patch_import_pipeline(monkeypatch, line)
|
|
|
|
resp = client.post(f"/api/v1/a76/invoices/{invoice.id}/process?company_id=1")
|
|
assert resp.status_code == 200
|
|
|
|
entries = (
|
|
db_session.query(BalanceMovement)
|
|
.filter(
|
|
BalanceMovement.import_invoice_id == invoice.id,
|
|
BalanceMovement.import_item_line_id == line.id,
|
|
BalanceMovement.movement_type == MovementType.ENTRY,
|
|
)
|
|
.all()
|
|
)
|
|
assert len(entries) >= 1
|
|
|
|
|
|
def test_process_import_def_does_not_create_balance_entries(client, db_session, monkeypatch):
|
|
ensure_reference_data(db_session)
|
|
ensure_tenant_company(db_session, tenant_id=1, company_id=1)
|
|
catalogs = create_business_catalogs(db_session, tenant_id=1, company_id=1)
|
|
invoice, line = create_import_invoice_with_line(
|
|
db_session, 1, 1, catalogs, invoice_type="DEF", invoice_number="IMP-DEF-01", qty=Decimal("7")
|
|
)
|
|
_patch_import_pipeline(monkeypatch, line)
|
|
|
|
resp = client.post(f"/api/v1/a76/invoices/{invoice.id}/process?company_id=1")
|
|
assert resp.status_code == 200
|
|
|
|
entries = (
|
|
db_session.query(BalanceMovement)
|
|
.filter(BalanceMovement.import_invoice_id == invoice.id)
|
|
.all()
|
|
)
|
|
assert entries == []
|