diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2017-11-11 16:06:21 +0100 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2017-11-11 16:14:21 +0100 |
commit | 4ee139ad5c58006da1f9af93fdd4e70592e6daa0 (patch) | |
tree | 3bd816b1981cf2089cfbac6f47904f33f72e6ac1 | |
parent | a1b097ce1811d320322a225d22183c36125b4a3c (diff) | |
download | gitlab-4ee139ad5c58006da1f9af93fdd4e70592e6daa0.tar.gz |
Add unit tests for mixin exceptions
-rw-r--r-- | RELEASE_NOTES.rst | 1 | ||||
-rw-r--r-- | gitlab/mixins.py | 9 | ||||
-rw-r--r-- | gitlab/tests/test_mixins.py | 86 |
3 files changed, 94 insertions, 2 deletions
diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst index 2d6a05c..a9008f7 100644 --- a/RELEASE_NOTES.rst +++ b/RELEASE_NOTES.rst @@ -16,6 +16,7 @@ Changes from 1.1 to 1.2 ``set_token`` and ``set_credentials`` methods. Once a Gitlab object has been created its URL and authentication information cannot be updated: create a new Gitlab object if you need to use new information +* The ``todo()`` method raises a ``GitlabTodoError`` exception on error Changes from 1.0.2 to 1.1 ========================= diff --git a/gitlab/mixins.py b/gitlab/mixins.py index 3d6e321..c9243ed 100644 --- a/gitlab/mixins.py +++ b/gitlab/mixins.py @@ -113,7 +113,12 @@ class GetFromListMixin(ListMixin): GitlabAuthenticationError: If authentication is not correct GitlabGetError: If the server cannot perform the request """ - gen = self.list() + try: + gen = self.list() + except exc.GitlabListError: + raise exc.GitlabGetError(response_code=404, + error_message="Not found") + for obj in gen: if str(obj.get_id()) == str(id): return obj @@ -382,7 +387,7 @@ class SubscribableMixin(object): class TodoMixin(object): @cli.register_custom_action(('ProjectIssue', 'ProjectMergeRequest')) - @exc.on_http_error(exc.GitlabHttpError) + @exc.on_http_error(exc.GitlabTodoError) def todo(self, **kwargs): """Create a todo associated to the object. diff --git a/gitlab/tests/test_mixins.py b/gitlab/tests/test_mixins.py index c51322a..e78c757 100644 --- a/gitlab/tests/test_mixins.py +++ b/gitlab/tests/test_mixins.py @@ -434,3 +434,89 @@ class TestMixinMethods(unittest.TestCase): self.assertIsInstance(obj, FakeObject) self.assertEqual(obj.key, 'foo') self.assertEqual(obj.value, 'bar') + + +class TestExceptions(unittest.TestCase): + def setUp(self): + self.gl = Gitlab("http://localhost", private_token="private_token", + api_version=4) + + def test_get_mixin(self): + class M(GetMixin, FakeManager): + pass + + m = M(self.gl) + self.assertRaises(GitlabGetError, m.get, 1) + + def test_get_without_id_mixin(self): + class M(GetWithoutIdMixin, FakeManager): + pass + + m = M(self.gl) + self.assertRaises(GitlabGetError, m.get) + + def test_list_mixin(self): + class M(ListMixin, FakeManager): + pass + + m = M(self.gl) + self.assertRaises(GitlabListError, m.list) + + def test_get_from_list_mixin(self): + class M(GetFromListMixin, FakeManager): + pass + + m = M(self.gl) + self.assertRaises(GitlabListError, m.list) + self.assertRaises(GitlabGetError, m.get, 1) + + def test_create_mixin(self): + class M(CreateMixin, FakeManager): + pass + + m = M(self.gl) + self.assertRaises(GitlabCreateError, m.create, {}) + + def test_update_mixin(self): + class M(UpdateMixin, FakeManager): + pass + + m = M(self.gl) + self.assertRaises(GitlabUpdateError, m.update, 1, {}) + + def test_set_mixin(self): + class M(SetMixin, FakeManager): + pass + + m = M(self.gl) + self.assertRaises(GitlabSetError, m.set, 'foo', 'bar') + + def test_delete_mixin(self): + class M(DeleteMixin, FakeManager): + pass + + m = M(self.gl) + self.assertRaises(GitlabDeleteError, m.delete, 1) + + def test_object_mixin(self): + class M(UpdateMixin, DeleteMixin, FakeManager): + pass + + class O(SaveMixin, ObjectDeleteMixin, AccessRequestMixin, + SubscribableMixin, TodoMixin, TimeTrackingMixin, RESTObject): + pass + + mgr = M(self.gl) + obj = O(mgr, {'id': 42, 'foo': 'bar'}) + obj.foo = 'baz' + self.assertRaises(GitlabUpdateError, obj.save) + self.assertRaises(GitlabDeleteError, obj.delete) + self.assertRaises(GitlabUpdateError, obj.approve) + self.assertRaises(GitlabSubscribeError, obj.subscribe) + self.assertRaises(GitlabUnsubscribeError, obj.unsubscribe) + self.assertRaises(GitlabTodoError, obj.todo) + self.assertRaises(GitlabTimeTrackingError, obj.time_stats) + self.assertRaises(GitlabTimeTrackingError, obj.time_estimate, '1d') + self.assertRaises(GitlabTimeTrackingError, obj.reset_time_estimate) + self.assertRaises(GitlabTimeTrackingError, obj.add_spent_time, '1d') + self.assertRaises(GitlabTimeTrackingError, obj.reset_spent_time) |