Beispiel #1
0
 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")
Beispiel #2
0
 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
     })
Beispiel #3
0
 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})
Beispiel #4
0
 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})
Beispiel #5
0
 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"])
Beispiel #6
0
 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)
Beispiel #7
0
 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})
Beispiel #8
0
 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\", [])])")
Beispiel #9
0
 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")
Beispiel #10
0
 def test_creating_an_invalid_group_saves_the_passed_in_data(self):
     instance = InvalidGroup("", [], "abc")
     self.assertEqual(instance.data, "abc")
Beispiel #11
0
 def test_creating_an_invalid_group_saves_the_passed_in_errors(self):
     instance = InvalidGroup("", [1, 2])
     self.assertEqual(instance.errors, [1, 2])