plano3d/pruebas/test_ventana.py

47 lines
1.6 KiB
Python

"""Pruebas de la ventana principal con el motor simulado."""
from pathlib import Path
from PySide6.QtCore import QMimeData, QUrl
from app.ventana import VentanaPrincipal
CUBE01 = Path(__file__).parent / "catalogo" / "CUBE01" / "plano.dxf"
def test_arranca_en_la_pagina_de_inicio(qtbot):
ventana = VentanaPrincipal()
qtbot.addWidget(ventana)
assert ventana.paginas.currentIndex() == 0
def test_cargar_cube01_muestra_estado_y_avisos(qtbot):
ventana = VentanaPrincipal()
qtbot.addWidget(ventana)
ventana.cargar_plano(CUBE01)
qtbot.waitUntil(lambda: ventana.resultado is not None, timeout=30000)
assert ventana.paginas.currentIndex() == 1
assert ventana.etiqueta_estado.text() == "Pieza reconstruida con avisos"
codigos = [ventana.lista_avisos.item(i).toolTip() for i in range(ventana.lista_avisos.count())]
assert "SIN_COTAS" in codigos and "PROYECCION_MIXTA" in codigos
def test_rechaza_formatos_no_admitidos(qtbot, monkeypatch):
ventana = VentanaPrincipal()
qtbot.addWidget(ventana)
avisos = []
monkeypatch.setattr("app.ventana.QMessageBox.warning", lambda *args: avisos.append(args))
ventana.cargar_plano(Path("pieza.pdf"))
assert avisos and ventana.ruta_actual is None
def test_arrastrar_solo_acepta_un_dxf():
def arrastrados(*rutas):
datos = QMimeData()
datos.setUrls([QUrl.fromLocalFile(str(r)) for r in rutas])
return datos
assert VentanaPrincipal._ruta_arrastrada(arrastrados(CUBE01)) == CUBE01
assert VentanaPrincipal._ruta_arrastrada(arrastrados("pieza.pdf")) is None
assert VentanaPrincipal._ruta_arrastrada(arrastrados(CUBE01, CUBE01)) is None