caudal/programa/pruebas/test_primer_uso.py
esetheyers 7e18576f86 Caudal 0.2.0
Taxes for the whole of Spain (common territory, Navarre, Álava, Bizkaia and Gipuzkoa); flats, garages and land valued on their own; Treasury bills, bonds and deposits priced on BME; broker accounts; a guided start; a page per investment with its chart and the tax of selling today; net worth at the top; undo when deleting; Woodpecker CI for the tests and the Linux build.
2026-10-15 16:49:15 -05:00

64 lines
2.5 KiB
Python

"""
Pruebas del primer uso (servidor.App.primer_uso): lo que dijo que tiene,
dónde declara, cerrar la lista de primeros pasos y la marca de la primera copia.
python3 -m unittest pruebas.test_primer_uso -v
"""
from __future__ import annotations
import sys
import tempfile
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from cartera import servidor # noqa: E402
from cartera.datos import Datos, escribir # noqa: E402
from cartera.operaciones import Cartera, ErrorOperacion # noqa: E402
class TestPrimerUso(unittest.TestCase):
def setUp(self):
t = tempfile.TemporaryDirectory()
self.addCleanup(t.cleanup)
carpeta = Path(t.name) / "datos"
escribir(carpeta, Datos([], [], [], []))
self.c = Cartera(carpeta)
self.addCleanup(self.c.cerrar)
self.app = servidor.App(self.c)
def test_de_partida_no_ha_contestado_y_el_territorio_es_el_comun(self):
e = self.app.estado()
self.assertEqual((e["primer_uso"], e["territorio"], e["territorio_elegido"]), ({}, "comun", False))
self.assertIn("navarra", e["territorios"])
def test_guarda_lo_que_tiene_en_su_orden_sin_lo_que_no_existe_y_el_territorio(self):
self.app.primer_uso({"tiene": ["inmuebles", "bitcoin", "yates"], "territorio": "navarra"})
e = self.app.estado()
self.assertEqual(e["primer_uso"]["tiene"], ["bitcoin", "inmuebles"])
self.assertEqual((e["territorio"], e["territorio_elegido"]), ("navarra", True))
# Los demás criterios fiscales siguen ahí
self.assertIn("plazo_fondos", self.app._ajustes()["fiscal"])
def test_saltar_cerrar_y_lo_que_no_vale(self):
self.app.primer_uso({"tiene": []})
self.app.primer_uso({"cerrado": True})
self.assertEqual(self.app.estado()["primer_uso"], {"tiene": [], "cerrado": True})
with self.assertRaises(ErrorOperacion):
self.app.primer_uso({"territorio": "andorra"})
with self.assertRaises(ErrorOperacion):
self.app.primer_uso({"tiene": "bitcoin"})
def test_bajar_una_copia_la_apunta_para_la_lista(self):
self.app.primer_uso({"tiene": ["fondos"]})
r = self.app.copia_crear({"clave": "una clave larga para la prueba"})
self.app.copia_descargar(r["id"])
pu = self.app.estado()["primer_uso"]
self.assertEqual(pu["tiene"], ["fondos"])
self.assertRegex(pu["copia"], r"^\d{4}-\d{2}-\d{2}$")
if __name__ == "__main__":
unittest.main()