def test_when_base_returns_invalid_when_passed_an_invalid_instance(self): val = _when_base(None, Invalid("abc")) self.assertTrue(isinstance(val, Invalid)) self.assertEqual(str(val), "abc") val = _when_base(None, InvalidGroup("", [Invalid("a"), Invalid("b")])) self.assertTrue(isinstance(val, InvalidGroup)) self.assertEqual(str(val), "a\nb")
def test_require_if_returns_an_invalid_group_with_invalids_removed(self): data = {"a": Invalid("a"), "b": 1, "c": Invalid("c"), "d": 2} req = require_if("a", Mock(return_value=False)) with self.assertRaises(InvalidGroup) as cm: req(InvalidGroup("", [data["a"], data["c"]], data)) self.assertEqual(str(cm.exception), "c") self.assertEqual(cm.exception.data, {"b": 1, "c": data["c"], "d": 2}) data = {"a": Invalid("a"), "b": 1, "c": Invalid("c"), "d": 2} req = require_if("a", Mock(return_value=True)) with self.assertRaises(InvalidGroup) as cm: req(InvalidGroup("", [data["a"], data["c"]], data)) self.assertEqual(str(cm.exception), "a\nc") self.assertEqual(cm.exception.data, { "a": data["a"], "b": 1, "c": data["c"], "d": 2 })
def test_require_one_returns_data_with_invalids_removed(self): data = { "a": Invalid("a"), "b": 1, "c": "abc", "d": Invalid("d"), "e": 2, "f": 3 } req = require_one("a", "b", "d", "f") val = req(InvalidGroup("", [data["a"], data["d"]], data)) self.assertEqual(val, {"b": 1, "c": "abc", "e": 2})
def test_require_one_returns_an_invalid_group_with_invalids_removed(self): data = { "a": Invalid("a"), "b": 1, "c": Invalid("c"), "d": Invalid("d"), "e": 2, "f": 3 } req = require_one("a", "b", "d", "f") with self.assertRaises(InvalidGroup) as cm: req(InvalidGroup("", [data["a"], data["c"], data["d"]], data)) self.assertEqual(str(cm.exception), "c") self.assertEqual(cm.exception.data, {"b": 1, "c": data["c"], "e": 2})
def test_calling_a_schema_raises_invalid_group_when_data_is_invalid(self): invalid = Invalid("abc") mocked = Mock(side_effect=invalid) with patch.object(Schema, "_validate", mocked): with self.assertRaises(InvalidGroup) as cm: instance = Schema({"a": int}) instance({"a": 1}) self.assertEqual(map(str, cm.exception.errors), ["abc"]) invalid = InvalidGroup("", [Invalid("def"), Invalid("ghi")]) mocked = Mock(side_effect=invalid) with patch.object(Schema, "_validate", mocked): with self.assertRaises(InvalidGroup) as cm: instance = Schema({"a": int}) instance({"a": 1}) self.assertEqual(map(str, cm.exception.errors), ["def", "ghi"])
def test_validate_function_catches_and_raises_invalid_group(self): invalid_group = InvalidGroup( "", [Invalid("abc", 8), Invalid("def", 9, [3])], 4) func = Mock(side_effect=invalid_group) with self.assertRaises(InvalidGroup) as cm: Schema._validate_function(func, 2, []) ex = cm.exception self.assertEqual(map(str, ex.errors), ["abc", "def @ data[3]"]) self.assertEqual([e.data for e in ex.errors], [8, 9]) self.assertEqual(ex.data, 4) with self.assertRaises(InvalidGroup) as cm: Schema._validate_function(func, 3, [1, "a"]) ex = cm.exception self.assertEqual(map(str, ex.errors), ["abc @ data[1][a]", "def @ data[1][a][3]"]) self.assertEqual([e.data for e in ex.errors], [8, 9]) self.assertEqual(ex.data, 4)
def test_require_one_returns_data_with_invalids_removed(self): data = {"a": Invalid("a"), "b": 1, "c": "abc", "d": 2} req = require_if("a", Mock(return_value=False)) val = req(InvalidGroup("", [data["a"]], data)) self.assertEqual(val, {"b": 1, "c": "abc", "d": 2})
def test_invalid_group_repr_returns_invalid_group_object(self): instance = InvalidGroup("", [Invalid("a", path=[1]), Invalid("b")]) self.assertEqual( repr(instance), "InvalidGroup([Invalid(\"a\", [1]), Invalid(\"b\", [])])")
def test_invalid_group_returns_all_error_messages_as_its_str(self): instance = InvalidGroup("", [Invalid("a", path=[1]), Invalid("b")]) self.assertEqual(str(instance), "a @ data[1]\nb")
def test_creating_an_invalid_group_saves_the_passed_in_data(self): instance = InvalidGroup("", [], "abc") self.assertEqual(instance.data, "abc")
def test_creating_an_invalid_group_saves_the_passed_in_errors(self): instance = InvalidGroup("", [1, 2]) self.assertEqual(instance.errors, [1, 2])