Exemple #1
0
 def test_children_have_their_errors_dicts_built(self):
     e1, e2 = (
         exceptions.ValidationError("1", validator="foo", path=["bar", 0]),
         exceptions.ValidationError("2", validator="quux", path=["bar", 0]),
     )
     tree = exceptions.ErrorTree([e1, e2])
     self.assertEqual(tree["bar"][0].errors, {"foo": e1, "quux": e2})
Exemple #2
0
 def test_it_creates_a_child_tree_for_each_nested_path(self):
     errors = [
         exceptions.ValidationError("a bar message", path=["bar"]),
         exceptions.ValidationError("a bar -> 0 message", path=["bar", 0]),
     ]
     tree = exceptions.ErrorTree(errors)
     self.assertIn(0, tree["bar"])
     self.assertNotIn(1, tree["bar"])
 def test_it_knows_how_many_total_errors_it_contains(self):
     # FIXME: https://github.com/Julian/jsonschema/issues/442
     errors = [
         exceptions.ValidationError("Something", validator=i)
         for i in range(8)
     ]
     tree = exceptions.ErrorTree(errors)
     self.assertEqual(tree.total_errors, 8)
Exemple #4
0
 def test_it_knows_how_many_total_errors_it_contains(self):
     # FIXME: #442
     errors = [
         exceptions.ValidationError("Something", validator=i)
         for i in range(8)
     ]
     tree = exceptions.ErrorTree(errors)
     self.assertEqual(tree.total_errors, 8)
Exemple #5
0
    def test_if_its_in_the_tree_anyhow_it_does_not_raise_an_error(self):
        """
        If a validator is dumb (like :validator:`required` in draft 3) and
        refers to a path that isn't in the instance, the tree still properly
        returns a subtree for that path.
        """

        error = exceptions.ValidationError(
            "a message", validator="foo", instance={}, path=["foo"],
        )
        tree = exceptions.ErrorTree([error])
        self.assertIsInstance(tree["foo"], exceptions.ErrorTree)
Exemple #6
0
 def test_multiple_errors_with_instance(self):
     e1, e2 = (
         exceptions.ValidationError("1",
                                    validator="foo",
                                    path=["bar", "bar2"],
                                    instance="i1"),
         exceptions.ValidationError("2",
                                    validator="quux",
                                    path=["foobar", 2],
                                    instance="i2"),
     )
     exceptions.ErrorTree([e1, e2])
 def test_regression_multiple_errors_with_instance(self):
     e1, e2 = (
         exceptions.ValidationError("1",
                                    validator="foo",
                                    path=["bar", "bar2"],
                                    instance="i1"),
         exceptions.ValidationError("2",
                                    validator="quux",
                                    path=["foobar", 2],
                                    instance="i2"),
     )
     # Will raise an exception if the bug is still there.
     exceptions.ErrorTree([e1, e2])
Exemple #8
0
 def test_repr(self):
     e1, e2 = (
         exceptions.ValidationError(
             "1",
             validator="foo",
             path=["bar", "bar2"],
             instance="i1"),
         exceptions.ValidationError(
             "2",
             validator="quux",
             path=["foobar", 2],
             instance="i2"),
     )
     tree = exceptions.ErrorTree([e1, e2])
     self.assertEqual(repr(tree), "<ErrorTree (2 total errors)>")
Exemple #9
0
    def test_it_does_not_contain_subtrees_that_are_not_in_the_instance(self):
        error = exceptions.ValidationError("123", validator="foo", instance=[])
        tree = exceptions.ErrorTree([error])

        with self.assertRaises(IndexError):
            tree[0]
Exemple #10
0
 def test_validators_that_failed_appear_in_errors_dict(self):
     error = exceptions.ValidationError("a message", validator="foo")
     tree = exceptions.ErrorTree([error])
     self.assertEqual(tree.errors, {"foo": error})
Exemple #11
0
 def test_it_does_not_contain_an_item_if_the_item_had_no_error(self):
     errors = [exceptions.ValidationError("a message", path=["bar"])]
     tree = exceptions.ErrorTree(errors)
     self.assertNotIn("foo", tree)
Exemple #12
0
 def test_it_knows_how_many_total_errors_it_contains(self):
     errors = [mock.MagicMock() for _ in range(8)]
     tree = exceptions.ErrorTree(errors)
     self.assertEqual(tree.total_errors, 8)