Projeto do Agent Contas ORACLE
This commit is contained in:
61
tests/migration/original_test_bill_processor.py
Normal file
61
tests/migration/original_test_bill_processor.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import pandas as pd
|
||||
|
||||
from app.domain.contas.parsers.bill_processor import PDFBillingProcessor
|
||||
|
||||
|
||||
def test_danfe_payload_preserva_ordem_do_parser_nos_itens_do_plano() -> None:
|
||||
processor = PDFBillingProcessor(include_danfe=True)
|
||||
danfe_df = pd.DataFrame(
|
||||
[
|
||||
{"desc": "TIM CTRL Redes Sociais 8 0", "value": 35.96},
|
||||
{"desc": "Serviços de Valor Adicionado Conteúdo", "value": 99.99},
|
||||
{"desc": "Aya Books Premium", "value": 19.44},
|
||||
]
|
||||
)
|
||||
raw = {
|
||||
"DANFE-COM": danfe_df,
|
||||
"Plano": pd.DataFrame(
|
||||
[
|
||||
{
|
||||
"desc": "TIM CTRL Redes Sociais 8 0 (096/POS/SMP)",
|
||||
"value": 35.96,
|
||||
}
|
||||
]
|
||||
),
|
||||
}
|
||||
|
||||
payload = processor._build_danfe_payload(danfe_df, raw)
|
||||
|
||||
item_names = [
|
||||
item["desc"]
|
||||
for item in payload["Planos"]["TIM CTRL Redes Sociais 8 0"]
|
||||
]
|
||||
assert item_names == [
|
||||
"TIM CTRL Redes Sociais 8 0",
|
||||
"Serviços de Valor Adicionado Conteúdo",
|
||||
"Aya Books Premium",
|
||||
]
|
||||
|
||||
|
||||
def test_max_mensal_em_itens_eventuais_e_estrategico() -> None:
|
||||
"""Max Mensal (streaming) em "Itens Eventuais" recebe estrategico=True e
|
||||
classe=estrategico; o avulso comum mantém classe=avulso."""
|
||||
processor = PDFBillingProcessor()
|
||||
df = pd.DataFrame(
|
||||
[
|
||||
{"desc": "Serviço Avulso X", "value": 9.90},
|
||||
{"desc": "Max Mensal", "value": 34.90},
|
||||
]
|
||||
)
|
||||
|
||||
regular, strategic = processor._split_strategic_records(df, "Itens Eventuais")
|
||||
|
||||
assert [r["desc"] for r in strategic] == ["Max Mensal"]
|
||||
assert strategic[0]["estrategico"] is True
|
||||
assert [r["desc"] for r in regular] == ["Serviço Avulso X"]
|
||||
|
||||
processor._annotate_class(strategic, "Itens Eventuais")
|
||||
processor._annotate_class(regular, "Itens Eventuais")
|
||||
assert strategic[0]["classe"] == "estrategico"
|
||||
assert strategic[0]["verb"] == "falar sobre"
|
||||
assert regular[0]["classe"] == "avulso"
|
||||
Reference in New Issue
Block a user