From b7e59f6bd142d1e0383e2d80f165e26d678d2d6b Mon Sep 17 00:00:00 2001 From: Matheus Fernandes Date: Wed, 26 Aug 2015 15:57:17 -0300 Subject: [PATCH] Finished gitlab plugin tests --- colab/plugins/gitlab/fixtures/gitlab_associations.json | 40 ++++++++++++++++++++++++++++++++++++++++ colab/plugins/gitlab/tests/data.py | 41 +++++++++++++++++++++++++++++++++++++++++ colab/plugins/gitlab/tests/test_data_importer.py | 55 +++++++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 126 insertions(+), 10 deletions(-) diff --git a/colab/plugins/gitlab/fixtures/gitlab_associations.json b/colab/plugins/gitlab/fixtures/gitlab_associations.json index 86cafc5..f09ab55 100644 --- a/colab/plugins/gitlab/fixtures/gitlab_associations.json +++ b/colab/plugins/gitlab/fixtures/gitlab_associations.json @@ -56,5 +56,45 @@ }, "model": "accounts.user", "pk": 2 +}, +{ + "fields": { + "last_activity_at": "2015-06-08T19:28:27.148Z", + "description": "Colab source code", + "name_with_namespace": "Software Publico / Colab", + "created_at": "2014-09-26T14:58:52.491Z", + "path_with_namespace": "softwarepublico/colab", + "public": true, + "name": "Colab" + }, + "model": "gitlab.gitlabproject", + "pk": 14 +}, +{ + "fields": { + "target_branch": "master", + "description": "", + "source_branch": "settings_fix", + "created_at": "2014-10-24T12:05:55.659Z", + "title": "Settings fix", + "project": 14, + "iid": 1, + "state": "merged", + "user": null + }, + "model": "gitlab.gitlabmergerequest", + "pk": 7 +}, +{ + "fields": { + "description": "Remove the main SPB logo from the homepage", + "title": "Remove the SPB central logo", + "created_at": "2014-10-07T17:40:27.625Z", + "project": 14, + "state": "closed", + "user": null + }, + "model": "gitlab.gitlabissue", + "pk": 2 } ] \ No newline at end of file diff --git a/colab/plugins/gitlab/tests/data.py b/colab/plugins/gitlab/tests/data.py index f07bfd6..a2b47a4 100644 --- a/colab/plugins/gitlab/tests/data.py +++ b/colab/plugins/gitlab/tests/data.py @@ -55,3 +55,44 @@ merge_json = [{"id": 7, "target_project_id": 14, "labels": [], "milestone": None}] + +issues_json = [{"id": 8, + "iid": 1, + "project_id": 32, + "title": "title", + "description": "description", + "state": "opened", + "created_at": "2014-10-11T16:25:37.548Z", + "updated_at": "2014-10-11T16:25:37.548Z", + "labels": [], + "milestone": None, + "assignee": {"name": "name", + "username": "username", + "id": 2, + "state": "active", + "avatar_url": "avatar_url"}, + "author": {"name": "name", + "username": "user", + "id": 2, + "state": "active", + "avatar_url": "avatar_url"}}] + +comment_mr_json = [{"id": 11, + "body": "message body", + "attachment": None, + "author": {"name": "user", + "username": "user", + "id": 8, + "state": "active", + "avatar_url": "avatar_url"}, + "created_at": "2014-10-25T14:43:54.863Z"}] + +comment_issue_json = [{"id": 447, + "body": "message body", + "attachment": None, + "author": {"name": "user", + "username": "user", + "state": "active", + "id": 8, + "avatar_url": "avatar_url"}, + "created_at": "2015-03-16T17:34:07.715Z"}] diff --git a/colab/plugins/gitlab/tests/test_data_importer.py b/colab/plugins/gitlab/tests/test_data_importer.py index d13f91d..5826397 100644 --- a/colab/plugins/gitlab/tests/test_data_importer.py +++ b/colab/plugins/gitlab/tests/test_data_importer.py @@ -1,21 +1,17 @@ from django.test import TestCase from django.test.utils import override_settings from ..data_importer import GitlabDataImporter -from ..models import GitlabProject +from ..models import GitlabProject, GitlabIssue from mock import patch import data +from dateutil.parser import parse class GitlabDataImporterTest(TestCase): fixtures = ["gitlab_associations"] - colab_apps = data.colab_apps - projects_json = data.projects_json - groups_json = data.groups_json - merge_json = data.merge_json - - @override_settings(COLAB_APPS=colab_apps) + @override_settings(COLAB_APPS=data.colab_apps) def setUp(self): self.api = GitlabDataImporter() @@ -31,7 +27,7 @@ class GitlabDataImporterTest(TestCase): @patch.object(GitlabDataImporter, 'get_json_data') def test_fetch_projects(self, mock_json): - mock_json.side_effect = [self.projects_json, []] + mock_json.side_effect = [data.projects_json, []] projects = self.api.fetch_projects() self.assertEqual(len(projects), 1) @@ -41,7 +37,7 @@ class GitlabDataImporterTest(TestCase): @patch.object(GitlabDataImporter, 'get_json_data') def test_fetch_groups(self, mock_json): - mock_json.side_effect = [self.groups_json, []] + mock_json.side_effect = [data.groups_json, []] groups = self.api.fetch_groups() self.assertEqual(len(groups), 2) @@ -53,10 +49,49 @@ class GitlabDataImporterTest(TestCase): @patch.object(GitlabDataImporter, 'get_json_data') def test_fetch_merge(self, mock_json): - mock_json.side_effect = [self.merge_json, []] + mock_json.side_effect = [data.merge_json, []] merges = self.api.fetch_merge_request([GitlabProject()]) self.assertEqual(len(merges), 1) self.assertEqual(merges[0].title, "Merge Title") self.assertEqual(merges[0].description, "description") self.assertEqual(merges[0].get_author().username, "user") + + @patch.object(GitlabDataImporter, 'get_json_data') + def test_fetch_issues(self, mock_json): + mock_json.side_effect = [data.issues_json, []] + + issues = self.api.fetch_issue([GitlabProject()]) + assert mock_json.called + self.assertEqual(len(issues), 1) + self.assertEqual(issues[0].title, "title") + self.assertEqual(issues[0].description, "description") + self.assertEqual(issues[0].state, "opened") + + @patch.object(GitlabDataImporter, 'get_json_data') + def test_fetch_comments_mr(self, mock_json): + mock_json.side_effect = [data.comment_mr_json, []] + + comments_mr = self.api.fetch_comments_mr() + self.assertEqual(len(comments_mr), 1) + self.assertEqual(comments_mr[0].body, "message body") + self.assertEqual(comments_mr[0].user.username, "user") + + @patch.object(GitlabDataImporter, 'get_json_data') + def test_fetch_comments_issues(self, mock_json): + mock_json.side_effect = [data.comment_issue_json, []] + + comments_issue = self.api.fetch_comments_issues() + self.assertEqual(len(comments_issue), 1) + self.assertEqual(comments_issue[0].body, "message body") + self.assertEqual(comments_issue[0].user.username, "user") + + def test_fill_object_data(self): + issue = GitlabIssue() + + self.api.fill_object_data(data.issues_json[0], issue) + self.assertIsNotNone(issue.user) + self.assertEqual(issue.user.username, "user") + self.assertEqual(issue.created_at, parse("2014-10-11T16:25:37.548Z")) + self.assertEqual(issue.project_id, 32) + self.assertEqual(issue.title, "title") -- libgit2 0.21.2