refactor: supprime le code mort et unifie les routes de tags
Code sans aucun appelant, retiré : DatabaseService.get_revenus_summary (annoté list[dict] alors qu'il retournait un dict), get_depenses_summary, get_tag_by_id et storage.file_exists. Les tags étaient gérés à deux adresses : /api/tags (lecture, appelée par trois composants) et /api/config/tags (lecture, création, renommage, appelée par la seule page de configuration). Tout est regroupé sur /api/tags, dans le module qui leur est dédié ; config.py ne garde que les settings et ConfigPage est recâblée. Ces routes n'avaient aucun test : sept en couvrent maintenant la création, le renommage, l'unicité et les noms vides. /api/stats disparaît également : sous-ensemble de /api/dashboard/stats, il n'était appelé par personne. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
58
tests/test_tags_api.py
Normal file
58
tests/test_tags_api.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""Tests des endpoints de gestion des tags.
|
||||
|
||||
Lecture, creation et renommage vivaient a deux adresses differentes
|
||||
(`/api/tags` et `/api/config/tags`) : ces tests verrouillent l'adresse unique
|
||||
retenue, celle que consomment desormais toutes les pages.
|
||||
"""
|
||||
|
||||
|
||||
def test_liste_les_tags_predefinis(api_client):
|
||||
"""La base initialisee est deja pourvue de ses tags de depart."""
|
||||
response = api_client.get("/api/tags")
|
||||
|
||||
assert response.status_code == 200
|
||||
tags = response.json()
|
||||
assert tags, "la base devrait etre amorcee avec des tags predefinis"
|
||||
assert {"id", "nom"} == set(tags[0])
|
||||
|
||||
|
||||
def test_cree_un_tag(api_client):
|
||||
response = api_client.post("/api/tags", json={"nom": "Ravalement"})
|
||||
|
||||
assert response.status_code == 201
|
||||
assert response.json()["nom"] == "Ravalement"
|
||||
assert "Ravalement" in [tag["nom"] for tag in api_client.get("/api/tags").json()]
|
||||
|
||||
|
||||
def test_refuse_un_tag_en_double(api_client):
|
||||
api_client.post("/api/tags", json={"nom": "Ravalement"})
|
||||
|
||||
response = api_client.post("/api/tags", json={"nom": "Ravalement"})
|
||||
|
||||
assert response.status_code == 409
|
||||
|
||||
|
||||
def test_refuse_un_nom_vide(api_client):
|
||||
assert api_client.post("/api/tags", json={"nom": " "}).status_code == 400
|
||||
|
||||
|
||||
def test_renomme_un_tag(api_client):
|
||||
tag_id = api_client.post("/api/tags", json={"nom": "Ravalement"}).json()["id"]
|
||||
|
||||
response = api_client.put(f"/api/tags/{tag_id}", json={"nom": "Facade"})
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.json() == {"id": tag_id, "nom": "Facade"}
|
||||
|
||||
|
||||
def test_renommer_un_tag_inconnu_donne_404(api_client):
|
||||
assert api_client.put("/api/tags/99999", json={"nom": "Facade"}).status_code == 404
|
||||
|
||||
|
||||
def test_refuse_un_renommage_vers_un_nom_pris(api_client):
|
||||
api_client.post("/api/tags", json={"nom": "Ravalement"})
|
||||
autre_id = api_client.post("/api/tags", json={"nom": "Toiture"}).json()["id"]
|
||||
|
||||
response = api_client.put(f"/api/tags/{autre_id}", json={"nom": "Ravalement"})
|
||||
|
||||
assert response.status_code == 409
|
||||
Reference in New Issue
Block a user