diff options
Diffstat (limited to 'tools/functional/api/test_issues.py')
| -rw-r--r-- | tools/functional/api/test_issues.py | 89 |
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 |
