plano3d/pruebas/test_ventana.py

47 lines
1.6 KiB
Python
Raw Normal View History

"""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