summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2022-06-05 22:57:38 +0200
committerGitHub <noreply@github.com>2022-06-05 22:57:38 +0200
commit40c9b4f299d3c101bda7fabc89a42ff0f1f0ddc2 (patch)
tree0d45cb771c9adff70e4f3caf382f01120906924f /tests
parent7b9bb3c920e99d1efaa495de47c2be929d62ee74 (diff)
parentce40fde9eeaabb4a30c5a87d9097b1d4eced1c1b (diff)
downloadgitlab-40c9b4f299d3c101bda7fabc89a42ff0f1f0ddc2.tar.gz
Merge pull request #2045 from python-gitlab/jlvillal/test_validate_attrs
test: add more tests for RequiredOptional
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test_types.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/unit/test_types.py b/tests/unit/test_types.py
index ae192b4..c06e9d0 100644
--- a/tests/unit/test_types.py
+++ b/tests/unit/test_types.py
@@ -15,9 +15,58 @@
# 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/>.
+import pytest
+
from gitlab import types
+class TestRequiredOptional:
+ def test_requiredoptional_empty(self):
+ b = types.RequiredOptional()
+ assert not b.required
+ assert not b.optional
+ assert not b.exclusive
+
+ def test_requiredoptional_values_no_keywords(self):
+ b = types.RequiredOptional(
+ ("required1", "required2"),
+ ("optional1", "optional2"),
+ ("exclusive1", "exclusive2"),
+ )
+ assert b.required == ("required1", "required2")
+ assert b.optional == ("optional1", "optional2")
+ assert b.exclusive == ("exclusive1", "exclusive2")
+
+ def test_requiredoptional_values_keywords(self):
+ b = types.RequiredOptional(
+ exclusive=("exclusive1", "exclusive2"),
+ optional=("optional1", "optional2"),
+ required=("required1", "required2"),
+ )
+ assert b.required == ("required1", "required2")
+ assert b.optional == ("optional1", "optional2")
+ assert b.exclusive == ("exclusive1", "exclusive2")
+
+ def test_validate_attrs_required(self):
+ data = {"required1": 1, "optional2": 2}
+ rq = types.RequiredOptional(required=("required1",))
+ rq.validate_attrs(data=data)
+ data = {"optional1": 1, "optional2": 2}
+ with pytest.raises(AttributeError, match="Missing attributes: required1"):
+ rq.validate_attrs(data=data)
+
+ def test_validate_attrs_exclusive(self):
+ data = {"exclusive1": 1, "optional1": 1}
+ rq = types.RequiredOptional(exclusive=("exclusive1", "exclusive2"))
+ rq.validate_attrs(data=data)
+ data = {"exclusive1": 1, "exclusive2": 2, "optional1": 1}
+ with pytest.raises(
+ AttributeError,
+ match="Provide only one of these attributes: exclusive1, exclusive2",
+ ):
+ rq.validate_attrs(data=data)
+
+
def test_gitlab_attribute_get():
o = types.GitlabAttribute("whatever")
assert o.get() == "whatever"