Le faux omettait la clé pull_request sur les issues, ce qui a masqué le bug de la 0.5.1 pendant que 84 tests restaient verts. Clé désormais toujours présente (null = issue, objet = PR) + 4 tests dédiés dans test_regression_gitea_payload.py.
35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
"""Regression: real Gitea returns "pull_request": null on plain issues.
|
||
|
||
The 0.2.0–0.5.0 filter tested key *presence* ("pull_request" not in
|
||
item), which classified every real issue as a PR and silently emptied
|
||
every board against a real Gitea — while the test fake omitted the
|
||
key entirely, so the suite stayed green. Found 2026-10-11 after a
|
||
user report ("new issue does not appear on the board"): the live
|
||
flowdeck board rendered 0 cards for 6 open issues.
|
||
"""
|
||
|
||
from app.main import _is_issue
|
||
|
||
|
||
def test_plain_issue_with_null_pull_request_is_an_issue():
|
||
assert _is_issue({"number": 1, "pull_request": None}) is True
|
||
|
||
|
||
def test_pull_request_object_is_not_an_issue():
|
||
assert _is_issue({"number": 2, "pull_request": {"url": "http://x/pr/2"}}) is False
|
||
|
||
|
||
def test_missing_key_is_an_issue():
|
||
assert _is_issue({"number": 3}) is True
|
||
|
||
|
||
def test_board_renders_cards_from_realistic_payload(client):
|
||
# The shared fake now mirrors the real payload (key always
|
||
# present, null on plain issues): if the filter regresses to a
|
||
# presence test, these cards vanish and this test goes red.
|
||
r = client.get("/board/Projets/demo")
|
||
assert r.status_code == 200
|
||
assert "Tâche un" in r.text
|
||
assert "Tâche focus" in r.text
|
||
assert "PR déguisée" not in r.text
|