summaryrefslogtreecommitdiff
path: root/tools/functional/api/test_issues.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/functional/api/test_issues.py')
-rw-r--r--tools/functional/api/test_issues.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/tools/functional/api/test_issues.py b/tools/functional/api/test_issues.py
new file mode 100644
index 0000000..ebff72b
--- /dev/null
+++ b/tools/functional/api/test_issues.py
@@ -0,0 +1,89 @@
+import gitlab
+
+
+def test_create_issue(project):
+ issue = project.issues.create({"title": "my issue 1"})
+ issue2 = project.issues.create({"title": "my issue 2"})
+ assert len(project.issues.list()) == 2
+
+ issue2.state_event = "close"
+ issue2.save()
+ assert len(project.issues.list(state="closed")) == 1
+ assert len(project.issues.list(state="opened")) == 1
+
+ assert isinstance(issue.user_agent_detail(), dict)
+ assert issue.user_agent_detail()["user_agent"]
+ assert issue.participants()
+ assert type(issue.closed_by()) == list
+ assert type(issue.related_merge_requests()) == list
+
+
+def test_issue_notes(issue):
+ size = len(issue.notes.list())
+
+ note = issue.notes.create({"body": "This is an issue note"})
+ assert len(issue.notes.list()) == size + 1
+
+ emoji = note.awardemojis.create({"name": "tractor"})
+ assert len(note.awardemojis.list()) == 1
+
+ emoji.delete()
+ assert len(note.awardemojis.list()) == 0
+
+ note.delete()
+ assert len(issue.notes.list()) == size
+
+
+def test_issue_labels(project, issue):
+ label = project.labels.create({"name": "label2", "color": "#aabbcc"})
+ issue.labels = ["label2"]
+ issue.save()
+
+ assert issue in project.issues.list(labels=["label2"])
+ assert issue in project.issues.list(labels="label2")
+ assert issue in project.issues.list(labels="Any")
+ assert issue not in project.issues.list(labels="None")
+
+
+def test_issue_events(issue):
+ events = issue.resourcelabelevents.list()
+ assert isinstance(events, list)
+
+ event = issue.resourcelabelevents.get(events[0].id)
+ assert isinstance(event, gitlab.v4.objects.ProjectIssueResourceLabelEvent)
+
+
+def test_issue_milestones(project, milestone):
+ data = {"title": "my issue 1", "milestone_id": milestone.id}
+ issue = project.issues.create(data)
+ assert milestone.issues().next().title == "my issue 1"
+
+ milestone_events = issue.resourcemilestoneevents.list()
+ assert isinstance(milestone_events, list)
+
+ milestone_event = issue.resourcemilestoneevents.get(milestone_events[0].id)
+ assert isinstance(
+ milestone_event, gitlab.v4.objects.ProjectIssueResourceMilestoneEvent
+ )
+
+ milestone_issues = project.issues.list(milestone=milestone.title)
+ assert len(milestone_issues) == 1
+
+
+def test_issue_discussions(issue):
+ size = len(issue.discussions.list())
+
+ discussion = issue.discussions.create({"body": "Discussion body"})
+ assert len(issue.discussions.list()) == size + 1
+
+ d_note = discussion.notes.create({"body": "first note"})
+ d_note_from_get = discussion.notes.get(d_note.id)
+ d_note_from_get.body = "updated body"
+ d_note_from_get.save()
+
+ discussion = issue.discussions.get(discussion.id)
+ assert discussion.attributes["notes"][-1]["body"] == "updated body"
+
+ d_note_from_get.delete()
+ discussion = issue.discussions.get(discussion.id)
+ assert len(discussion.attributes["notes"]) == 1