#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ test_export_sivas_zusammenfassen.py - zusammengefasste Sivas-Kopie (_zusammengefasst.csv, export_sivas.items_zusammenfassen). Laeuft komplett ohne BricsCAD (reine Python-Logik). """ import os import sys sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "lib")) import export_sivas # noqa: E402 def _geruest(teileid, laenge="2500"): return {"block_name": f"GR_{teileid}", "x": 0.0, "y": 0.0, "z": 0.0, "rotation": 0.0, "attribs": {"ID": teileid, "TEILEART": "Geruest Saeule 2 Zoll", "ARTINR": "821006051,825002022,825002022", "TEILEFARBE": "RAL7035,,", "BEZEICHNUNG": "Saeule", "LAENGE": laenge}} def test_gleiche_zeilen_werden_summiert(): items, _ = export_sivas.process_blocks( [_geruest("0001"), _geruest("0002"), _geruest("0003", laenge="2800")]) assert len(items) == 6 zus = export_sivas.items_zusammenfassen(items) # Laenge gehoert zum Schluessel: 2500er und 2800er bleiben getrennt assert len(zus) == 4 assert [z["nr"] for z in zus] == [1, 2, 3, 4] z = {(z["sivasnr"], z["laenge_mm"]): z for z in zus} assert z[("825002022", "2500")]["anzahl"] == 4 assert z[("825002022", "2500")]["ids"] == ["0001", "0002"] assert z[("821006051", "2500")]["anzahl"] == 2 assert z[("821006051", "2500")]["details"] == {export_sivas.MERKMAL_TEILEFARBE: "RAL7035"} assert z[("825002022", "2800")]["anzahl"] == 2 assert z[("825002022", "2800")]["ids"] == ["0003"] def test_eingabe_bleibt_unveraendert(): items, _ = export_sivas.process_blocks([_geruest("0001"), _geruest("0002")]) vorher = [export_sivas.format_csv_line(it) for it in items] export_sivas.items_zusammenfassen(items) assert [export_sivas.format_csv_line(it) for it in items] == vorher def test_dateiname(): assert export_sivas.zusammengefasster_dateiname("x/500651_sivas.csv") == \ "x/500651_sivas_zusammengefasst.csv"