Merge pull request 'fix(agent): ensure_sprint на задаче без спринта (#13)' (#14) from fix/13-ensure-sprint-without-sprint into main
Reviewed-on: #14
This commit is contained in:
commit
d7cd05044a
@ -739,7 +739,9 @@ class Executor:
|
||||
|
||||
def do_ensure_sprint(self, p: dict, cmd: dict) -> dict:
|
||||
key, want = p["key"], p["sprint"]
|
||||
cur = ((self.jira.get(AGILE + "/issue/%s" % key, fields="sprint")["fields"].get("sprint") or {}).get("name"))
|
||||
# у задачи без спринта Jira банка отвечает без ключа fields (#13)
|
||||
issue = self.jira.get(AGILE + "/issue/%s" % key, fields="sprint")
|
||||
cur = (((issue.get("fields") or {}).get("sprint")) or {}).get("name")
|
||||
if want == "backlog": # в бэклог доска не нужна
|
||||
if cur is None:
|
||||
return self._out("done", {"sprint": None, "changed": False})
|
||||
|
||||
@ -248,6 +248,8 @@ class FakeJira:
|
||||
if m:
|
||||
name = self.issues[m.group(1)]["sprint"]
|
||||
sp = next((s for s in self.sprints if s["name"] == name), None)
|
||||
if sp is None: # как Jira банка (13.10.2026): без спринта ключа fields в ответе нет
|
||||
return 200, {"key": m.group(1)}
|
||||
return 200, {"key": m.group(1), "fields": {"sprint": sp}}
|
||||
return 404, {"errorMessages": ["нет маршрута %s %s" % (method, p)]}
|
||||
|
||||
|
||||
@ -153,6 +153,16 @@ class ExecutorLinksTest(unittest.TestCase):
|
||||
self.assertEqual(again["result"], {"sprint": "Спринт 2", "changed": False})
|
||||
self.assertEqual(again["jira_calls"], 1)
|
||||
|
||||
def test_sprint_issue_without_sprint_has_no_fields(self):
|
||||
"""#13: у задачи без спринта Jira банка отвечает без ключа fields — это «спринта нет», а не ошибка."""
|
||||
self.assertIsNone(self.fake.issues["AURORA-1"]["sprint"])
|
||||
backlog = self.run_cmd("ensure_sprint", key="AURORA-1", sprint="backlog")
|
||||
self.assertEqual(backlog["status"], "done")
|
||||
self.assertEqual(backlog["result"], {"sprint": None, "changed": False})
|
||||
out = self.run_cmd("ensure_sprint", key="AURORA-1", sprint="Спринт 2")
|
||||
self.assertEqual(out["status"], "done")
|
||||
self.assertEqual(self.fake.issues["AURORA-1"]["sprint"], "Спринт 2")
|
||||
|
||||
def test_sprint_pagination(self):
|
||||
for i in range(3, 58): # 57 спринтов: доска отдаёт по 50, нужны две страницы
|
||||
self.fake.sprints.append({"id": i, "name": "Спринт %d" % i, "state": "future"})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user