From db1fb89d70feee8ef45876ec8ac5f9ccf69457a5 Mon Sep 17 00:00:00 2001 From: Gauvain Pocentek Date: Sat, 23 Jan 2016 19:44:12 +0100 Subject: [PATCH] Implement ProjectMilestone.issues() This lists the issues related to the milestone. Add python API tests for issues. --- gitlab/objects.py | 13 +++++++++++++ tools/python_test.py | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/gitlab/objects.py b/gitlab/objects.py index 5ae1fb37c..70c1286f7 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -891,6 +891,19 @@ class ProjectMilestone(GitlabObject): optionalCreateAttrs = ['description', 'due_date', 'state_event'] shortPrintAttr = 'title' + def issues(self): + url = "/projects/%s/milestones/%s/issues" % (self.project_id, self.id) + r = self.gitlab._raw_get(url) + raise_error_from_response(r, GitlabDeleteError) + + l = [] + for j in r.json(): + o = ProjectIssue(self, j) + o._from_api = True + l.append(o) + + return l + class ProjectMilestoneManager(BaseManager): obj_cls = ProjectMilestone diff --git a/tools/python_test.py b/tools/python_test.py index 0d3b9f2db..916f84b9c 100644 --- a/tools/python_test.py +++ b/tools/python_test.py @@ -131,3 +131,16 @@ m1.save() m1 = admin_project.milestones.get(1) assert(m1.state == 'closed') + +# issues +issue1 = admin_project.issues.create({'title': 'my issue 1', + 'milestone_id': m1.id}) +issue2 = admin_project.issues.create({'title': 'my issue 2'}) +issue3 = admin_project.issues.create({'title': 'my issue 3'}) +assert(len(admin_project.issues.list()) == 3) +issue3.state_event = 'close' +issue3.save() +assert(len(admin_project.issues.list(state='closed')) == 1) +assert(len(admin_project.issues.list(state='opened')) == 2) +assert(len(admin_project.issues.list(milestone='milestone1')) == 1) +assert(m1.issues()[0].title == 'my issue 1')