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:
jonatanritter
2026-08-08 02:15:16 -03:00
co-authored by Claude Opus 4.8
parent 39ba81efad
commit d9c1c444fb
+15
View File
@@ -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,