Commit b7e59f6bd142d1e0383e2d80f165e26d678d2d6b
Committed by
Lucas Kanashiro
1 parent
358a0795
Exists in
master
and in
27 other branches
Finished gitlab plugin tests
Signed-off-by: Matheus Fernandes <matheus.souza.fernandes@gmail.com> Signed-off-by: Lucas Moura <lucas.moura128@gmail.com>
Showing
3 changed files
with
126 additions
and
10 deletions
Show diff stats
colab/plugins/gitlab/fixtures/gitlab_associations.json
| @@ -56,5 +56,45 @@ | @@ -56,5 +56,45 @@ | ||
| 56 | }, | 56 | }, |
| 57 | "model": "accounts.user", | 57 | "model": "accounts.user", |
| 58 | "pk": 2 | 58 | "pk": 2 |
| 59 | +}, | ||
| 60 | +{ | ||
| 61 | + "fields": { | ||
| 62 | + "last_activity_at": "2015-06-08T19:28:27.148Z", | ||
| 63 | + "description": "Colab source code", | ||
| 64 | + "name_with_namespace": "Software Publico / Colab", | ||
| 65 | + "created_at": "2014-09-26T14:58:52.491Z", | ||
| 66 | + "path_with_namespace": "softwarepublico/colab", | ||
| 67 | + "public": true, | ||
| 68 | + "name": "Colab" | ||
| 69 | + }, | ||
| 70 | + "model": "gitlab.gitlabproject", | ||
| 71 | + "pk": 14 | ||
| 72 | +}, | ||
| 73 | +{ | ||
| 74 | + "fields": { | ||
| 75 | + "target_branch": "master", | ||
| 76 | + "description": "", | ||
| 77 | + "source_branch": "settings_fix", | ||
| 78 | + "created_at": "2014-10-24T12:05:55.659Z", | ||
| 79 | + "title": "Settings fix", | ||
| 80 | + "project": 14, | ||
| 81 | + "iid": 1, | ||
| 82 | + "state": "merged", | ||
| 83 | + "user": null | ||
| 84 | + }, | ||
| 85 | + "model": "gitlab.gitlabmergerequest", | ||
| 86 | + "pk": 7 | ||
| 87 | +}, | ||
| 88 | +{ | ||
| 89 | + "fields": { | ||
| 90 | + "description": "Remove the main SPB logo from the homepage", | ||
| 91 | + "title": "Remove the SPB central logo", | ||
| 92 | + "created_at": "2014-10-07T17:40:27.625Z", | ||
| 93 | + "project": 14, | ||
| 94 | + "state": "closed", | ||
| 95 | + "user": null | ||
| 96 | + }, | ||
| 97 | + "model": "gitlab.gitlabissue", | ||
| 98 | + "pk": 2 | ||
| 59 | } | 99 | } |
| 60 | ] | 100 | ] |
| 61 | \ No newline at end of file | 101 | \ No newline at end of file |
colab/plugins/gitlab/tests/data.py
| @@ -55,3 +55,44 @@ merge_json = [{"id": 7, | @@ -55,3 +55,44 @@ merge_json = [{"id": 7, | ||
| 55 | "target_project_id": 14, | 55 | "target_project_id": 14, |
| 56 | "labels": [], | 56 | "labels": [], |
| 57 | "milestone": None}] | 57 | "milestone": None}] |
| 58 | + | ||
| 59 | +issues_json = [{"id": 8, | ||
| 60 | + "iid": 1, | ||
| 61 | + "project_id": 32, | ||
| 62 | + "title": "title", | ||
| 63 | + "description": "description", | ||
| 64 | + "state": "opened", | ||
| 65 | + "created_at": "2014-10-11T16:25:37.548Z", | ||
| 66 | + "updated_at": "2014-10-11T16:25:37.548Z", | ||
| 67 | + "labels": [], | ||
| 68 | + "milestone": None, | ||
| 69 | + "assignee": {"name": "name", | ||
| 70 | + "username": "username", | ||
| 71 | + "id": 2, | ||
| 72 | + "state": "active", | ||
| 73 | + "avatar_url": "avatar_url"}, | ||
| 74 | + "author": {"name": "name", | ||
| 75 | + "username": "user", | ||
| 76 | + "id": 2, | ||
| 77 | + "state": "active", | ||
| 78 | + "avatar_url": "avatar_url"}}] | ||
| 79 | + | ||
| 80 | +comment_mr_json = [{"id": 11, | ||
| 81 | + "body": "message body", | ||
| 82 | + "attachment": None, | ||
| 83 | + "author": {"name": "user", | ||
| 84 | + "username": "user", | ||
| 85 | + "id": 8, | ||
| 86 | + "state": "active", | ||
| 87 | + "avatar_url": "avatar_url"}, | ||
| 88 | + "created_at": "2014-10-25T14:43:54.863Z"}] | ||
| 89 | + | ||
| 90 | +comment_issue_json = [{"id": 447, | ||
| 91 | + "body": "message body", | ||
| 92 | + "attachment": None, | ||
| 93 | + "author": {"name": "user", | ||
| 94 | + "username": "user", | ||
| 95 | + "state": "active", | ||
| 96 | + "id": 8, | ||
| 97 | + "avatar_url": "avatar_url"}, | ||
| 98 | + "created_at": "2015-03-16T17:34:07.715Z"}] |
colab/plugins/gitlab/tests/test_data_importer.py
| 1 | from django.test import TestCase | 1 | from django.test import TestCase |
| 2 | from django.test.utils import override_settings | 2 | from django.test.utils import override_settings |
| 3 | from ..data_importer import GitlabDataImporter | 3 | from ..data_importer import GitlabDataImporter |
| 4 | -from ..models import GitlabProject | 4 | +from ..models import GitlabProject, GitlabIssue |
| 5 | from mock import patch | 5 | from mock import patch |
| 6 | import data | 6 | import data |
| 7 | +from dateutil.parser import parse | ||
| 7 | 8 | ||
| 8 | 9 | ||
| 9 | class GitlabDataImporterTest(TestCase): | 10 | class GitlabDataImporterTest(TestCase): |
| 10 | 11 | ||
| 11 | fixtures = ["gitlab_associations"] | 12 | fixtures = ["gitlab_associations"] |
| 12 | 13 | ||
| 13 | - colab_apps = data.colab_apps | ||
| 14 | - projects_json = data.projects_json | ||
| 15 | - groups_json = data.groups_json | ||
| 16 | - merge_json = data.merge_json | ||
| 17 | - | ||
| 18 | - @override_settings(COLAB_APPS=colab_apps) | 14 | + @override_settings(COLAB_APPS=data.colab_apps) |
| 19 | def setUp(self): | 15 | def setUp(self): |
| 20 | self.api = GitlabDataImporter() | 16 | self.api = GitlabDataImporter() |
| 21 | 17 | ||
| @@ -31,7 +27,7 @@ class GitlabDataImporterTest(TestCase): | @@ -31,7 +27,7 @@ class GitlabDataImporterTest(TestCase): | ||
| 31 | 27 | ||
| 32 | @patch.object(GitlabDataImporter, 'get_json_data') | 28 | @patch.object(GitlabDataImporter, 'get_json_data') |
| 33 | def test_fetch_projects(self, mock_json): | 29 | def test_fetch_projects(self, mock_json): |
| 34 | - mock_json.side_effect = [self.projects_json, []] | 30 | + mock_json.side_effect = [data.projects_json, []] |
| 35 | 31 | ||
| 36 | projects = self.api.fetch_projects() | 32 | projects = self.api.fetch_projects() |
| 37 | self.assertEqual(len(projects), 1) | 33 | self.assertEqual(len(projects), 1) |
| @@ -41,7 +37,7 @@ class GitlabDataImporterTest(TestCase): | @@ -41,7 +37,7 @@ class GitlabDataImporterTest(TestCase): | ||
| 41 | 37 | ||
| 42 | @patch.object(GitlabDataImporter, 'get_json_data') | 38 | @patch.object(GitlabDataImporter, 'get_json_data') |
| 43 | def test_fetch_groups(self, mock_json): | 39 | def test_fetch_groups(self, mock_json): |
| 44 | - mock_json.side_effect = [self.groups_json, []] | 40 | + mock_json.side_effect = [data.groups_json, []] |
| 45 | 41 | ||
| 46 | groups = self.api.fetch_groups() | 42 | groups = self.api.fetch_groups() |
| 47 | self.assertEqual(len(groups), 2) | 43 | self.assertEqual(len(groups), 2) |
| @@ -53,10 +49,49 @@ class GitlabDataImporterTest(TestCase): | @@ -53,10 +49,49 @@ class GitlabDataImporterTest(TestCase): | ||
| 53 | 49 | ||
| 54 | @patch.object(GitlabDataImporter, 'get_json_data') | 50 | @patch.object(GitlabDataImporter, 'get_json_data') |
| 55 | def test_fetch_merge(self, mock_json): | 51 | def test_fetch_merge(self, mock_json): |
| 56 | - mock_json.side_effect = [self.merge_json, []] | 52 | + mock_json.side_effect = [data.merge_json, []] |
| 57 | 53 | ||
| 58 | merges = self.api.fetch_merge_request([GitlabProject()]) | 54 | merges = self.api.fetch_merge_request([GitlabProject()]) |
| 59 | self.assertEqual(len(merges), 1) | 55 | self.assertEqual(len(merges), 1) |
| 60 | self.assertEqual(merges[0].title, "Merge Title") | 56 | self.assertEqual(merges[0].title, "Merge Title") |
| 61 | self.assertEqual(merges[0].description, "description") | 57 | self.assertEqual(merges[0].description, "description") |
| 62 | self.assertEqual(merges[0].get_author().username, "user") | 58 | self.assertEqual(merges[0].get_author().username, "user") |
| 59 | + | ||
| 60 | + @patch.object(GitlabDataImporter, 'get_json_data') | ||
| 61 | + def test_fetch_issues(self, mock_json): | ||
| 62 | + mock_json.side_effect = [data.issues_json, []] | ||
| 63 | + | ||
| 64 | + issues = self.api.fetch_issue([GitlabProject()]) | ||
| 65 | + assert mock_json.called | ||
| 66 | + self.assertEqual(len(issues), 1) | ||
| 67 | + self.assertEqual(issues[0].title, "title") | ||
| 68 | + self.assertEqual(issues[0].description, "description") | ||
| 69 | + self.assertEqual(issues[0].state, "opened") | ||
| 70 | + | ||
| 71 | + @patch.object(GitlabDataImporter, 'get_json_data') | ||
| 72 | + def test_fetch_comments_mr(self, mock_json): | ||
| 73 | + mock_json.side_effect = [data.comment_mr_json, []] | ||
| 74 | + | ||
| 75 | + comments_mr = self.api.fetch_comments_mr() | ||
| 76 | + self.assertEqual(len(comments_mr), 1) | ||
| 77 | + self.assertEqual(comments_mr[0].body, "message body") | ||
| 78 | + self.assertEqual(comments_mr[0].user.username, "user") | ||
| 79 | + | ||
| 80 | + @patch.object(GitlabDataImporter, 'get_json_data') | ||
| 81 | + def test_fetch_comments_issues(self, mock_json): | ||
| 82 | + mock_json.side_effect = [data.comment_issue_json, []] | ||
| 83 | + | ||
| 84 | + comments_issue = self.api.fetch_comments_issues() | ||
| 85 | + self.assertEqual(len(comments_issue), 1) | ||
| 86 | + self.assertEqual(comments_issue[0].body, "message body") | ||
| 87 | + self.assertEqual(comments_issue[0].user.username, "user") | ||
| 88 | + | ||
| 89 | + def test_fill_object_data(self): | ||
| 90 | + issue = GitlabIssue() | ||
| 91 | + | ||
| 92 | + self.api.fill_object_data(data.issues_json[0], issue) | ||
| 93 | + self.assertIsNotNone(issue.user) | ||
| 94 | + self.assertEqual(issue.user.username, "user") | ||
| 95 | + self.assertEqual(issue.created_at, parse("2014-10-11T16:25:37.548Z")) | ||
| 96 | + self.assertEqual(issue.project_id, 32) | ||
| 97 | + self.assertEqual(issue.title, "title") |