From b7fd5de8ecfd1eb32f5f820a2e45edd4ef16ea26 Mon Sep 17 00:00:00 2001 From: Tim Heap Date: Mon, 4 Jan 2016 15:24:29 +1100 Subject: [PATCH] Add test for failing StreamBlock validation --- wagtail/wagtailcore/tests/test_blocks.py | 32 ++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/wagtail/wagtailcore/tests/test_blocks.py b/wagtail/wagtailcore/tests/test_blocks.py index a295c565d..8421b1561 100644 --- a/wagtail/wagtailcore/tests/test_blocks.py +++ b/wagtail/wagtailcore/tests/test_blocks.py @@ -1239,6 +1239,38 @@ class TestStreamBlock(unittest.TestCase): html ) + def test_validation_errors(self): + class ValidatedBlock(blocks.StreamBlock): + char = blocks.CharBlock() + url = blocks.URLBlock() + block = ValidatedBlock() + + value = [ + blocks.BoundBlock( + block=block.child_blocks['char'], + value='', + ), + blocks.BoundBlock( + block=block.child_blocks['char'], + value='foo', + ), + blocks.BoundBlock( + block=block.child_blocks['url'], + value='http://example.com/', + ), + blocks.BoundBlock( + block=block.child_blocks['url'], + value='not a url', + ), + ] + + with self.assertRaises(ValidationError) as catcher: + block.clean(value) + self.assertEqual(catcher.exception.params, { + 0: ['This field is required.'], + 3: ['Enter a valid URL.'], + }) + def test_html_declarations(self): class ArticleBlock(blocks.StreamBlock): heading = blocks.CharBlock()