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