47 lines
1.6 KiB
Python
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
|