summaryrefslogtreecommitdiff
path: root/gitlab
diff options
context:
space:
mode:
authorMax Wittig <max.wittig95@gmail.com>2019-09-08 15:04:05 +0200
committerMax Wittig <max.wittig95@gmail.com>2019-09-08 15:13:13 +0200
commit77155678a5d8dbbf11d00f3586307694042d3227 (patch)
tree58ff9e09f453a18f97ee23d2d5866b760d487911 /gitlab
parentfef085dca35d6b60013d53a3723b4cbf121ab2ae (diff)
downloadgitlab-77155678a5d8dbbf11d00f3586307694042d3227.tar.gz
test(todo): add unittests
Diffstat (limited to 'gitlab')
-rw-r--r--gitlab/tests/data/todo.json75
-rw-r--r--gitlab/tests/test_gitlab.py46
2 files changed, 121 insertions, 0 deletions
diff --git a/gitlab/tests/data/todo.json b/gitlab/tests/data/todo.json
new file mode 100644
index 0000000..93b2151
--- /dev/null
+++ b/gitlab/tests/data/todo.json
@@ -0,0 +1,75 @@
+[
+ {
+ "id": 102,
+ "project": {
+ "id": 2,
+ "name": "Gitlab Ce",
+ "name_with_namespace": "Gitlab Org / Gitlab Ce",
+ "path": "gitlab-ce",
+ "path_with_namespace": "gitlab-org/gitlab-ce"
+ },
+ "author": {
+ "name": "Administrator",
+ "username": "root",
+ "id": 1,
+ "state": "active",
+ "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+ "web_url": "https://gitlab.example.com/root"
+ },
+ "action_name": "marked",
+ "target_type": "MergeRequest",
+ "target": {
+ "id": 34,
+ "iid": 7,
+ "project_id": 2,
+ "title": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
+ "description": "Et ea et omnis illum cupiditate. Dolor aspernatur tenetur ducimus facilis est nihil. Quo esse cupiditate molestiae illo corrupti qui quidem dolor.",
+ "state": "opened",
+ "created_at": "2016-06-17T07:49:24.419Z",
+ "updated_at": "2016-06-17T07:52:43.484Z",
+ "target_branch": "tutorials_git_tricks",
+ "source_branch": "DNSBL_docs",
+ "upvotes": 0,
+ "downvotes": 0,
+ "author": {
+ "name": "Maxie Medhurst",
+ "username": "craig_rutherford",
+ "id": 12,
+ "state": "active",
+ "avatar_url": "http://www.gravatar.com/avatar/a0d477b3ea21970ce6ffcbb817b0b435?s=80&d=identicon",
+ "web_url": "https://gitlab.example.com/craig_rutherford"
+ },
+ "assignee": {
+ "name": "Administrator",
+ "username": "root",
+ "id": 1,
+ "state": "active",
+ "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
+ "web_url": "https://gitlab.example.com/root"
+ },
+ "source_project_id": 2,
+ "target_project_id": 2,
+ "labels": [],
+ "work_in_progress": false,
+ "milestone": {
+ "id": 32,
+ "iid": 2,
+ "project_id": 2,
+ "title": "v1.0",
+ "description": "Assumenda placeat ea voluptatem voluptate qui.",
+ "state": "active",
+ "created_at": "2016-06-17T07:47:34.163Z",
+ "updated_at": "2016-06-17T07:47:34.163Z",
+ "due_date": null
+ },
+ "merge_when_pipeline_succeeds": false,
+ "merge_status": "cannot_be_merged",
+ "subscribed": true,
+ "user_notes_count": 7
+ },
+ "target_url": "https://gitlab.example.com/gitlab-org/gitlab-ce/merge_requests/7",
+ "body": "Dolores in voluptatem tenetur praesentium omnis repellendus voluptatem quaerat.",
+ "state": "pending",
+ "created_at": "2016-06-17T07:52:35.225Z"
+ }
+]
diff --git a/gitlab/tests/test_gitlab.py b/gitlab/tests/test_gitlab.py
index 318ac17..ed5556d 100644
--- a/gitlab/tests/test_gitlab.py
+++ b/gitlab/tests/test_gitlab.py
@@ -21,6 +21,7 @@ from __future__ import print_function
import os
import pickle
import tempfile
+import json
try:
import unittest
@@ -671,6 +672,51 @@ class TestGitlab(unittest.TestCase):
self.assertEqual(status.message, "test")
self.assertEqual(status.emoji, "thumbsup")
+ def test_todo(self):
+ todo_content = open(os.path.dirname(__file__) + "/data/todo.json", "r").read()
+ json_content = json.loads(todo_content)
+
+ @urlmatch(scheme="http", netloc="localhost", path="/api/v4/todos", method="get")
+ def resp_get_todo(url, request):
+ headers = {"content-type": "application/json"}
+ content = todo_content.encode("utf-8")
+ return response(200, content, headers, None, 5, request)
+
+ @urlmatch(
+ scheme="http",
+ netloc="localhost",
+ path="/api/v4/todos/102/mark_as_done",
+ method="post",
+ )
+ def resp_mark_as_done(url, request):
+ headers = {"content-type": "application/json"}
+ single_todo = json.dumps(json_content[0])
+ content = single_todo.encode("utf-8")
+ return response(200, content, headers, None, 5, request)
+
+ with HTTMock(resp_get_todo):
+ todo = self.gl.todos.list()[0]
+ self.assertEqual(type(todo), Todo)
+ self.assertEqual(todo.id, 102)
+ self.assertEqual(todo.target_type, "MergeRequest")
+ self.assertEqual(todo.target["assignee"]["username"], "root")
+ with HTTMock(resp_mark_as_done):
+ todo.mark_as_done()
+
+ def test_todo_mark_all_as_done(self):
+ @urlmatch(
+ scheme="http",
+ netloc="localhost",
+ path="/api/v4/todos/mark_as_done",
+ method="post",
+ )
+ def resp_mark_all_as_done(url, request):
+ headers = {"content-type": "application/json"}
+ return response(204, {}, headers, None, 5, request)
+
+ with HTTMock(resp_mark_all_as_done):
+ self.gl.todos.mark_all_as_done()
+
def _default_config(self):
fd, temp_path = tempfile.mkstemp()
os.write(fd, valid_config)