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.
64 lines
2.5 KiB
Python
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()
|