Commit b7e59f6bd142d1e0383e2d80f165e26d678d2d6b

Authored by Matheus Fernandes
Committed by Lucas Kanashiro
1 parent 358a0795

Finished gitlab plugin tests

Signed-off-by: Matheus Fernandes <matheus.souza.fernandes@gmail.com>
Signed-off-by: Lucas Moura <lucas.moura128@gmail.com>
colab/plugins/gitlab/fixtures/gitlab_associations.json
... ... @@ -56,5 +56,45 @@
56 56 },
57 57 "model": "accounts.user",
58 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 101 \ No newline at end of file
... ...
colab/plugins/gitlab/tests/data.py
... ... @@ -55,3 +55,44 @@ merge_json = [{&quot;id&quot;: 7,
55 55 "target_project_id": 14,
56 56 "labels": [],
57 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 1 from django.test import TestCase
2 2 from django.test.utils import override_settings
3 3 from ..data_importer import GitlabDataImporter
4   -from ..models import GitlabProject
  4 +from ..models import GitlabProject, GitlabIssue
5 5 from mock import patch
6 6 import data
  7 +from dateutil.parser import parse
7 8  
8 9  
9 10 class GitlabDataImporterTest(TestCase):
10 11  
11 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 15 def setUp(self):
20 16 self.api = GitlabDataImporter()
21 17  
... ... @@ -31,7 +27,7 @@ class GitlabDataImporterTest(TestCase):
31 27  
32 28 @patch.object(GitlabDataImporter, 'get_json_data')
33 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 32 projects = self.api.fetch_projects()
37 33 self.assertEqual(len(projects), 1)
... ... @@ -41,7 +37,7 @@ class GitlabDataImporterTest(TestCase):
41 37  
42 38 @patch.object(GitlabDataImporter, 'get_json_data')
43 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 42 groups = self.api.fetch_groups()
47 43 self.assertEqual(len(groups), 2)
... ... @@ -53,10 +49,49 @@ class GitlabDataImporterTest(TestCase):
53 49  
54 50 @patch.object(GitlabDataImporter, 'get_json_data')
55 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 54 merges = self.api.fetch_merge_request([GitlabProject()])
59 55 self.assertEqual(len(merges), 1)
60 56 self.assertEqual(merges[0].title, "Merge Title")
61 57 self.assertEqual(merges[0].description, "description")
62 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")
... ...