diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2018-03-17 16:46:18 +0100 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2018-03-17 16:46:18 +0100 |
commit | 1940feec3dbb099dc3d671cd14ba756e7d34b071 (patch) | |
tree | 50c516a33507c9c92ab88c90189445acf5a65cf7 /gitlab/tests | |
parent | 455a8fc8cab12bbcbf35f04053da84ec0ed1c5c6 (diff) | |
download | gitlab-1940feec3dbb099dc3d671cd14ba756e7d34b071.tar.gz |
Implement attribute types to handle special cases
Some attributes need to be parsed/modified to work with the API (for
instance lists). This patch provides two attribute types that will
simplify parts of the code, and fix some CLI bugs.
Fixes #443
Diffstat (limited to 'gitlab/tests')
-rw-r--r-- | gitlab/tests/test_types.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/gitlab/tests/test_types.py b/gitlab/tests/test_types.py new file mode 100644 index 0000000..c04f68f --- /dev/null +++ b/gitlab/tests/test_types.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2018 Gauvain Pocentek <gauvain@pocentek.net> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +try: + import unittest +except ImportError: + import unittest2 as unittest + +from gitlab import types + + +class TestGitlabAttribute(unittest.TestCase): + def test_all(self): + o = types.GitlabAttribute('whatever') + self.assertEqual('whatever', o.get()) + + o.set_from_cli('whatever2') + self.assertEqual('whatever2', o.get()) + + self.assertEqual('whatever2', o.get_for_api()) + + o = types.GitlabAttribute() + self.assertEqual(None, o._value) + + +class TestListAttribute(unittest.TestCase): + def test_list_input(self): + o = types.ListAttribute() + o.set_from_cli('foo,bar,baz') + self.assertEqual(['foo', 'bar', 'baz'], o.get()) + + o.set_from_cli('foo') + self.assertEqual(['foo'], o.get()) + + def test_empty_input(self): + o = types.ListAttribute() + o.set_from_cli('') + self.assertEqual([], o.get()) + + o.set_from_cli(' ') + self.assertEqual([], o.get()) + + def test_get_for_api(self): + o = types.ListAttribute() + o.set_from_cli('foo,bar,baz') + self.assertEqual('foo,bar,baz', o.get_for_api()) + + +class TestLowercaseStringAttribute(unittest.TestCase): + def test_get_for_api(self): + o = types.LowercaseStringAttribute('FOO') + self.assertEqual('foo', o.get_for_api()) |