diff options
| author | John L. Villalovos <john@sodarock.com> | 2021-05-25 17:35:17 -0700 |
|---|---|---|
| committer | John L. Villalovos <john@sodarock.com> | 2021-05-26 06:42:19 -0700 |
| commit | 502715d99e02105c39b2c5cf0e7457b3256eba0d (patch) | |
| tree | e9064cda7c903159d8025def351475c10a707118 /tests/functional/api/test_issues.py | |
| parent | 9beff0d484b5fe86e2cd31f20cf00a309e09cf75 (diff) | |
| download | gitlab-502715d99e02105c39b2c5cf0e7457b3256eba0d.tar.gz | |
chore: rename 'tools/functional/' to 'tests/functional/'
Rename the 'tools/functional/' directory to 'tests/functional/'
This makes more sense as these are functional tests and not tools.
This was dicussed in:
https://github.com/python-gitlab/python-gitlab/discussions/1468
Diffstat (limited to 'tests/functional/api/test_issues.py')
| -rw-r--r-- | tests/functional/api/test_issues.py | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/functional/api/test_issues.py b/tests/functional/api/test_issues.py new file mode 100644 index 0000000..f3a606b --- /dev/null +++ b/tests/functional/api/test_issues.py @@ -0,0 +1,93 @@ +import gitlab + + +def test_create_issue(project): + issue = project.issues.create({"title": "my issue 1"}) + issue2 = project.issues.create({"title": "my issue 2"}) + issue_ids = [issue.id for issue in project.issues.list()] + assert len(issue_ids) == 2 + + # Test 'iids' as a list + assert len(project.issues.list(iids=issue_ids)) == 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): + 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 |
