# edited by glg
from pypos.modules.penjualan.services.load_transaksi_apply_service import (
    LoadTransaksiApplyService,
)


def test_build_local_load_payload_success():
    service = LoadTransaksiApplyService()
    payload = service.build_local_load_payload(
        transaksi_id=77,
        header=(2, "Member A", 5, 11, 120000),
        detail_rows=[("1", "Produk A", 10000, 2, 0, "pcs")],
        raw_transaksi={"nomer": "INV-77"},
        parse_header=lambda h: h,
        build_preorder_payload=lambda **kwargs: {
            "transaksi_id": kwargs.get("transaksi_id"),
            "detail_rows": kwargs.get("detail_rows"),
        },
    )

    assert bool(payload.get("ok")) is True
    assert int(payload.get("transaksi_id") or 0) == 77
    assert payload.get("customers_nama") == "Member A"
    assert payload.get("preorder_payload", {}).get("transaksi_id") == 77


def test_build_local_load_payload_invalid_header():
    service = LoadTransaksiApplyService()
    payload = service.build_local_load_payload(
        transaksi_id=99,
        header=None,
        detail_rows=[],
        raw_transaksi=None,
        parse_header=lambda _h: None,
        build_preorder_payload=lambda **_kwargs: None,
    )

    assert bool(payload.get("ok")) is False
    assert payload.get("reason") == "invalid_header"
