test: pass all non-default DadosEmissao fields from the golden JSON
The signed-golden payload builder forwarded only ver_proc from the golden,
letting nat_op/tp_emis/ind_* fall to EmissaoRequest defaults. caso_devolucao_
intra is the only case with a non-default nat_op ('Devolucao de venda'), so
the emitted XML carried <natOp>Venda</natOp> and diverged from the (correct)
golden byte-for-byte. The golden was right and the emission handles natOp
correctly; the harness was feeding incomplete input. Byte-for-byte assertion
unchanged, golden unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
39ba81efad
commit
d9c1c444fb
@@ -139,6 +139,21 @@ async def test_signed_golden_matches_byte_for_byte(db_session, monkeypatch, case
|
|||||||
# (design spec EMENDA F1: este serviço nunca aplica esse default
|
# (design spec EMENDA F1: este serviço nunca aplica esse default
|
||||||
# sozinho, o produto chamador sempre declara).
|
# sozinho, o produto chamador sempre declara).
|
||||||
"ver_proc": raw.get("ver_proc", "sowai-auto/1b.1"),
|
"ver_proc": raw.get("ver_proc", "sowai-auto/1b.1"),
|
||||||
|
# Campos opcionais que `sowai_fiscal.golden_helpers.dados_from_
|
||||||
|
# json` só seta quando presentes no JSON golden (caindo no
|
||||||
|
# default do próprio `DadosEmissao` quando ausentes) -- mesmo
|
||||||
|
# racional aqui: `EmissaoRequest` tem os MESMOS defaults
|
||||||
|
# ("Venda"/"1"/"1"/"1"/"1"), então só repassamos quando o golden
|
||||||
|
# declara um valor NÃO-default. Faltar isto (bug real corrigido
|
||||||
|
# aqui) fazia `caso_devolucao_intra` -- o único dos 6 casos com
|
||||||
|
# `nat_op` != "Venda" -- emitir com `<natOp>Venda</natOp>` em vez
|
||||||
|
# de `<natOp>Devolucao de venda</natOp>`, divergindo do golden
|
||||||
|
# assinado byte a byte.
|
||||||
|
"nat_op": raw.get("nat_op", "Venda"),
|
||||||
|
"tp_emis": raw.get("tp_emis", "1"),
|
||||||
|
"ind_final": raw.get("ind_final", "1"),
|
||||||
|
"ind_pres": raw.get("ind_pres", "1"),
|
||||||
|
"fin_nfe": raw.get("fin_nfe", "1"),
|
||||||
}
|
}
|
||||||
emit_response = await client.post(
|
emit_response = await client.post(
|
||||||
"/v1/emissoes", json=payload,
|
"/v1/emissoes", json=payload,
|
||||||
|
|||||||
Reference in New Issue
Block a user