X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_ro%2Ftests%2Ftest_utils.py;h=9fd71cf08d3079e27c2d570b04f5176c1519ea27;hb=1d55a23c9cd32f17bb7a6f21e5b6c2b476c5804f;hp=c3a4e7af81865e27acc810b9419e7e1ef2821f99;hpb=8a2d20725d5b3ad32946affd7bea7388434094e9;p=osm%2FRO.git diff --git a/osm_ro/tests/test_utils.py b/osm_ro/tests/test_utils.py index c3a4e7af..9fd71cf0 100644 --- a/osm_ro/tests/test_utils.py +++ b/osm_ro/tests/test_utils.py @@ -3,12 +3,16 @@ import unittest -from ..utils import get_arg, inject_args +from ..utils import ( + get_arg, + inject_args, + remove_extra_items, +) class TestUtils(unittest.TestCase): def test_inject_args_curries_arguments(self): - fn = inject_args(lambda a=None, b=None: a+b, a=3, b=5) + fn = inject_args(lambda a=None, b=None: a + b, a=3, b=5) self.assertEqual(fn(), 8) def test_inject_args_doesnt_add_arg_if_not_needed(self): @@ -31,20 +35,43 @@ class TestUtils(unittest.TestCase): def _fn(x, y, z): return x + y + z - x = get_arg('x', _fn, (1, 3, 4), {}) + x = get_arg("x", _fn, (1, 3, 4), {}) self.assertEqual(x, 1) - y = get_arg('y', _fn, (1, 3, 4), {}) + y = get_arg("y", _fn, (1, 3, 4), {}) self.assertEqual(y, 3) - z = get_arg('z', _fn, (1, 3, 4), {}) + z = get_arg("z", _fn, (1, 3, 4), {}) self.assertEqual(z, 4) def test_get_arg__keyword(self): def _fn(x, y, z=5): return x + y + z - z = get_arg('z', _fn, (1, 2), {'z': 3}) + z = get_arg("z", _fn, (1, 2), {"z": 3}) self.assertEqual(z, 3) -if __name__ == '__main__': + + def test_remove_extra_items__keep_aditional_properties(self): + schema = { + "type": "object", + "properties": { + "a": { + "type": "object", + "properties": { + "type": "object", + "properties": {"b": "string"}, + }, + "additionalProperties": True, + } + }, + } + + example = {"a": {"b": 1, "c": 2}, "d": 3} + deleted = remove_extra_items(example, schema) + self.assertIn("d", deleted) + self.assertIs(example.get("d"), None) + self.assertEqual(example["a"]["c"], 2) + + +if __name__ == "__main__": unittest.main()