815d49d699
Refs #122 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
82 lines
3.3 KiB
Python
82 lines
3.3 KiB
Python
"""gitea:Adriano/TieMeasureFlow#96 #122 - l'immagine del task visione sta in fit, senza scorrimento.
|
|
|
|
Controllo sulle classi del template: pannello overflow-hidden, riquadro flex-1 min-h-0 che contiene
|
|
<tmf-viewer> a tutta altezza (#122: zoom, img e overlay stanno dentro il componente).
|
|
"""
|
|
from pathlib import Path
|
|
|
|
TEMPLATE = Path(__file__).resolve().parents[1] / "templates" / "measure" / "task_execute.html"
|
|
|
|
|
|
def _panel():
|
|
src = TEMPLATE.read_text(encoding="utf-8")
|
|
start = src.rindex("<div", 0, src.index('x-data="visionExecute()"'))
|
|
end = src.index("MEASUREMENT TIMER BANNER")
|
|
return src[start:end]
|
|
|
|
|
|
def _tag_with(panel, marker):
|
|
# Il tag (aperto) che contiene il marker; i '>' dentro le virgolette (es. "=>") non lo chiudono.
|
|
pos = panel.index(marker)
|
|
i = panel.rindex("<", 0, pos)
|
|
quote = None
|
|
for j in range(i, len(panel)):
|
|
c = panel[j]
|
|
if quote:
|
|
quote = None if c == quote else quote
|
|
elif c in "\"'":
|
|
quote = c
|
|
elif c == ">":
|
|
return panel[i:j + 1]
|
|
raise AssertionError(marker)
|
|
|
|
|
|
def test_panel_does_not_scroll():
|
|
tag = _tag_with(_panel(), 'x-data="visionExecute()"')
|
|
assert "overflow-hidden" in tag and "min-h-0" in tag
|
|
assert "overflow-auto" not in tag
|
|
|
|
|
|
def test_image_is_inside_tmf_viewer():
|
|
# #122: img, svg overlay, barra zoom e pan sono di <tmf-viewer>: il template non ha piu' img/svg/viewport propri
|
|
panel = _panel()
|
|
viewer = _tag_with(panel, "tmf-viewer class")
|
|
assert "block" in viewer and "w-full" in viewer and "h-full" in viewer
|
|
assert ':src="shownImage"' in viewer
|
|
assert "x-show" not in viewer # mai x-show e :style stringa sullo stesso elemento: x-show sta sul riquadro
|
|
assert 'x-ref="img"' not in panel and 'x-ref="overlay"' not in panel and "<canvas" not in panel
|
|
assert "<img" not in panel and "<svg" not in panel
|
|
|
|
|
|
def test_no_own_zoom_viewport_in_template():
|
|
# #122: niente piu' viewport/wrapper di zoom del pannello (#115): li fa il componente
|
|
panel = _panel()
|
|
assert 'x-ref="vp"' not in panel
|
|
assert "zSize()" not in panel and "zoomBy(" not in panel and "zFit()" not in panel
|
|
|
|
|
|
def test_image_box_and_outcome_column_can_shrink():
|
|
panel = _panel()
|
|
box = _tag_with(panel, 'x-show="shownImage"')
|
|
assert "flex-1" in box and "min-h-0" in box
|
|
outcome = _tag_with(panel, 'x-show="result">')
|
|
assert "overflow-y-auto" in outcome and "min-h-0" in outcome
|
|
|
|
|
|
def test_quote_table_shows_nominal_and_tolerances():
|
|
# #117: la tabella quote del pannello mostra nominale e tolleranze come la schermata dei calibri
|
|
panel = _panel()
|
|
for marker in ("fmtTol(r.nominal)", "fmtTol(r.ltl)", "fmtTol(r.utl)", "fmtTol(r.lwl)", "fmtTol(r.uwl)"):
|
|
assert marker in panel, marker
|
|
assert "text-measure-fail" in panel and "text-measure-warning" in panel
|
|
|
|
|
|
def test_overlay_script_loaded_before_vision_execute_and_viewer():
|
|
# #116 #122: vision_overlay.js prima di vision_execute.js; le etichette le disegna <tmf-viewer> (viewerLabels via x-effect)
|
|
src = TEMPLATE.read_text(encoding="utf-8")
|
|
assert src.index("js/vision_overlay.js") < src.index("js/vision_execute.js")
|
|
assert src.index("js/vision_overlay.js") < src.index("js/image_viewer.js")
|
|
panel = _panel()
|
|
assert "$el.labels = viewerLabels" in panel
|
|
assert 'x-for="l in overlayLabels"' not in panel
|