"""Controllo del template del wizard DXF: le tre viste sono (#122, prima #113 #119 #121). Legge task_editor.html come testo (come test_vision_panel_fit.py), senza renderlo. """ import re from pathlib import Path TEMPLATE = Path(__file__).resolve().parent.parent / "templates" / "maker" / "task_editor.html" def _src() -> str: # senza commenti Jinja e HTML, che citano e i vecchi nomi text = TEMPLATE.read_text(encoding="utf-8") text = re.sub(r"\{#.*?#\}", "", text, flags=re.S) return re.sub(r"", "", text, flags=re.S) def _tag_of(src: str, marker: str) -> str: """Tag di apertura che contiene il marker.""" i = src.index(marker) start = src.rfind("", i) + 1] def test_three_viewers_image_dxf_prova(): # #122: tre : immagine (src), DXF (modo contenuto, con ), Prova (fit-height) src = _src() assert src.count(" da disegnare, dentro il componente i = src.index('save-name="dxf"') assert src.index("", i) assert "dxfPreviewD()" in src[i:src.index("", i)] def test_old_viewports_gone(): # #122: niente piu' viewport, barre e overlay scritti a mano src = _src() for old in ('x-ref="vpImg"', 'x-ref="vpDxf"', 'x-ref="overlay"', 'x-ref="viewport"', "tmfSaveImage(", "vZoomBy", "vFit(", "zoomPct", "vPct("): assert old not in src, old def test_no_style_string_on_viewers(): # #122: un :style a stringa sul cancella lo style statico; x-show non sta sul componente src = _src() for m in re.finditer(r"]*>", src): tag = m.group(0) assert ":style" not in tag and "x-show" not in tag, tag def test_scripts_loaded_before_wizard(): # #119 #121 #122: vision_overlay.js e save_image.js prima di image_viewer.js, che sta prima di dxf_recipe_wizard.js src = _src() viewer = src.index("js/image_viewer.js") assert src.index("js/vision_overlay.js") < viewer assert src.index("js/save_image.js") < viewer assert viewer < src.index("js/dxf_recipe_wizard.js")