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