From 4b38acdcba9b6a99b6889511dcf89efe9ac262ed Mon Sep 17 00:00:00 2001 From: Spark Date: Mon, 12 Oct 2026 15:47:28 -0400 Subject: [PATCH] =?UTF-8?q?test:=20palier=2017=20=E2=80=94=20/api/repos=20?= =?UTF-8?q?exhaustif=20et=20s=C3=A9lecteur=20branch=C3=A9=20sur=20/capture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_palier17.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/test_palier17.py diff --git a/tests/test_palier17.py b/tests/test_palier17.py new file mode 100644 index 0000000..903f606 --- /dev/null +++ b/tests/test_palier17.py @@ -0,0 +1,36 @@ +"""Palier 17 (0.21.0) — sélecteur de dépôt intelligent (Capture). + +- GET /api/repos : liste exhaustive des dépôts pour les + sélecteurs (la palette reste plafonnée à 60), épinglés + d'abord, archivés en dernier. +- La page /capture branche le sélecteur sur le champ Dépôt + (liste filtrée + complétion Tab par segment, repo-picker.js). +""" + + +def test_api_repos_lists_everything_ranked(client, fake_gitea): + fake_gitea.starred.add("Projets/vieux") + r = client.get("/api/repos") + assert r.status_code == 200 + repos = r.json()["repos"] + names = [x["full_name"] for x in repos] + # Exhaustif : actifs + inactifs + archivés du faux Gitea. + assert names == ["Projets/vieux", "Projets/demo", "Projets/archive"] or set(names) == { + "Projets/demo", "Projets/vieux", "Projets/archive", + } + # L'épinglé passe devant malgré son inactivité. + assert names[0] == "Projets/vieux" + by_name = {x["full_name"]: x for x in repos} + assert by_name["Projets/vieux"]["starred"] is True + assert by_name["Projets/demo"]["starred"] is False + assert by_name["Projets/archive"]["archived"] is True + + +def test_capture_page_wires_the_repo_picker(client): + r = client.get("/capture") + assert r.status_code == 200 + assert 'id="capture-repo"' in r.text + assert 'id="repo-listbox"' in r.text + assert "repo-picker.js" in r.text + # Le contrat du formulaire ne change pas. + assert 'name="repo_full_name"' in r.text