import csv import json from pathlib import Path from article_data_manager.enrichment.erp import ( enrich_rollcalc_articles_from_erp, write_enrichment_outputs, ) def test_enrichment_dry_run_writes_json_and_csv_outputs(tmp_path: Path) -> None: rollcalc_path = tmp_path / "article-data.json" erp_path = tmp_path / "erp.csv" json_path = tmp_path / "generated" / "article-data.erp-enriched-dry-run.json" report_path = tmp_path / "reports" / "erp-enrichment-report.csv" rollcalc_path.write_text( json.dumps( [ { "nr": "214700", "name": "RollCalc A", "thickness": 6.722, "area_weight": 750.0, "core_type": 0.0, }, { "nr": "999999", "name": "RollCalc Only", "thickness": 1.0, "area_weight": 0.0, "core_type": 0.0, }, ], ensure_ascii=False, indent=2, ) + "\n", encoding="utf-8", ) erp_path.write_text( "\n".join( [ "SL_ITEM_NO,ROP_PRODUCT_WIDTH,ROP_RATE_OF_PRODUCTION," "SL_MINIMUM_PRODUCTION_QUANTITY,WPL_WORKPLACE_TEXT,kg_qm,SL_PRODUCTION_SPEED", "214700,\"6,00\",\"18,5\",5000,Anlage 3,999,999", "ERPONLY,9.99,1.0,1,Anlage X,1,1", ] ), encoding="utf-8", ) result = enrich_rollcalc_articles_from_erp(rollcalc_path, erp_path) write_enrichment_outputs(result, json_path, report_path) output_articles = json.loads(json_path.read_text(encoding="utf-8")) assert [article["nr"] for article in output_articles] == ["214700", "999999"] assert output_articles[0]["area_weight"] == 750.0 assert output_articles[0]["erp"] == { "product_width_m": 6.0, "line_speed_m_min": 18.5, "minimum_production_quantity": 5000.0, "workplace": "Anlage 3", } assert output_articles[1]["erp"] == { "product_width_m": None, "line_speed_m_min": None, "minimum_production_quantity": None, "workplace": None, } with report_path.open("r", encoding="utf-8-sig", newline="") as report_file: rows = list(csv.DictReader(report_file, delimiter=";")) assert [row["nr"] for row in rows] == ["214700", "999999"] assert rows[0]["status"] == "complete" assert rows[1]["status"] == "no_erp_match"