From 7e6de4ddfa22095b05579d8e990d6b7dc363cf02 Mon Sep 17 00:00:00 2001 From: Dan Braghis Date: Fri, 23 Sep 2022 15:14:06 +0100 Subject: [PATCH] Fix string extraction from nullable `RichTextField` --- wagtail_localize/segments/extract.py | 4 +- .../segments/tests/test_segment_extraction.py | 4 + wagtail_localize/strings.py | 3 + .../test/migrations/0001_initial.py | 327 ++++++++---------- wagtail_localize/test/models.py | 2 + wagtail_localize/tests/test_strings.py | 3 + 6 files changed, 167 insertions(+), 176 deletions(-) diff --git a/wagtail_localize/segments/extract.py b/wagtail_localize/segments/extract.py index 7c79d3032..c3eaaf7f2 100644 --- a/wagtail_localize/segments/extract.py +++ b/wagtail_localize/segments/extract.py @@ -238,8 +238,10 @@ def extract_segments(instance): ) elif isinstance(field, RichTextField): + value = field.value_from_object(instance) + if is_translatable: - template, strings = extract_strings(field.value_from_object(instance)) + template, strings = extract_strings(value) # Find all unique href values hrefs = set() diff --git a/wagtail_localize/segments/tests/test_segment_extraction.py b/wagtail_localize/segments/tests/test_segment_extraction.py index 8e8a37e01..9cdf06044 100644 --- a/wagtail_localize/segments/tests/test_segment_extraction.py +++ b/wagtail_localize/segments/tests/test_segment_extraction.py @@ -113,6 +113,10 @@ def test_richtextfield(self): [segment.wrap("test_richtextfield") for segment in RICH_TEXT_TEST_OUTPUT], ) + def test_null_richtextfield(self): + page = make_test_page(test_null_richtextfield=None) + self.assertEqual(extract_segments(page), []) + def test_snippet(self): test_snippet = TestSnippet.objects.create(field="Test content") page = make_test_page(test_snippet=test_snippet) diff --git a/wagtail_localize/strings.py b/wagtail_localize/strings.py index 816ed674e..a24fbce7f 100644 --- a/wagtail_localize/strings.py +++ b/wagtail_localize/strings.py @@ -297,6 +297,9 @@ def extract_strings(html): tuple[str, list[tuple[StringValue, dict]]]: Returns a template string, and list 2-tuples containing a StringValue and dict of HTML attribute """ + if html is None: + html = "" + soup = BeautifulSoup(html, "html.parser") def wrap(elements): diff --git a/wagtail_localize/test/migrations/0001_initial.py b/wagtail_localize/test/migrations/0001_initial.py index 230c7f803..7bc86222b 100644 --- a/wagtail_localize/test/migrations/0001_initial.py +++ b/wagtail_localize/test/migrations/0001_initial.py @@ -1,15 +1,15 @@ -# Generated by Django 4.0.5 on 2022-06-05 11:41 +# Generated by Django 4.1.1 on 2022-09-23 14:13 from django.db import migrations, models import django.db.models.deletion import modelcluster.fields import uuid from wagtail import VERSION as WAGTAIL_VERSION -import wagtail.core.blocks -import wagtail.core.blocks.field_block -import wagtail.core.fields +import wagtail.blocks +import wagtail.blocks.field_block import wagtail.documents.blocks import wagtail.embeds.blocks +import wagtail.fields import wagtail.images.blocks import wagtail.snippets.blocks import wagtail_localize.test.models @@ -125,66 +125,59 @@ class Migration(migrations.Migration): ("test_emailfield", models.EmailField(blank=True, max_length=254)), ("test_slugfield", models.SlugField(blank=True)), ("test_urlfield", models.URLField(blank=True)), - ("test_richtextfield", wagtail.core.fields.RichTextField(blank=True)), + ("test_richtextfield", wagtail.fields.RichTextField(blank=True)), ( "test_streamfield", - wagtail.core.fields.StreamField( + wagtail.fields.StreamField( [ ( "test_charblock", - wagtail.core.blocks.CharBlock(max_length=255), + wagtail.blocks.CharBlock(max_length=255), ), ( "test_textblock", - wagtail.core.blocks.TextBlock(label="text block"), - ), - ("test_emailblock", wagtail.core.blocks.EmailBlock()), - ("test_urlblock", wagtail.core.blocks.URLBlock()), - ("test_richtextblock", wagtail.core.blocks.RichTextBlock()), - ("test_rawhtmlblock", wagtail.core.blocks.RawHTMLBlock()), - ( - "test_blockquoteblock", - wagtail.core.blocks.BlockQuoteBlock(), + wagtail.blocks.TextBlock(label="text block"), ), + ("test_emailblock", wagtail.blocks.EmailBlock()), + ("test_urlblock", wagtail.blocks.URLBlock()), + ("test_richtextblock", wagtail.blocks.RichTextBlock()), + ("test_rawhtmlblock", wagtail.blocks.RawHTMLBlock()), + ("test_blockquoteblock", wagtail.blocks.BlockQuoteBlock()), ( "test_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ - ("field_a", wagtail.core.blocks.TextBlock()), - ("field_b", wagtail.core.blocks.TextBlock()), + ("field_a", wagtail.blocks.TextBlock()), + ("field_b", wagtail.blocks.TextBlock()), ] ), ), ( "test_listblock", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.TextBlock() - ), + wagtail.blocks.ListBlock(wagtail.blocks.TextBlock()), ), ( "test_listblock_in_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "title", - wagtail.core.blocks.CharBlock( - required=False - ), + wagtail.blocks.CharBlock(required=False), ), ( "items", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.field_block.CharBlock + wagtail.blocks.ListBlock( + wagtail.blocks.field_block.CharBlock ), ), ( "links_list", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.StructBlock( + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( [ ( "heading", - wagtail.core.blocks.CharBlock( + wagtail.blocks.CharBlock( blank=True, label="List Heading", required=False, @@ -192,8 +185,8 @@ class Migration(migrations.Migration): ), ( "pages", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.PageChooserBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.PageChooserBlock() ), ), ] @@ -205,35 +198,32 @@ class Migration(migrations.Migration): ), ( "test_nestedstreamblock", - wagtail.core.blocks.StreamBlock( + wagtail.blocks.StreamBlock( [ - ("block_a", wagtail.core.blocks.TextBlock()), - ("block_b", wagtail.core.blocks.TextBlock()), + ("block_a", wagtail.blocks.TextBlock()), + ("block_b", wagtail.blocks.TextBlock()), ( "block_l", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.CharBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.CharBlock() ), ), - ( - "chooser", - wagtail.core.blocks.PageChooserBlock(), - ), + ("chooser", wagtail.blocks.PageChooserBlock()), ( "chooser_in_struct", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), ), ( "chooser_in_list", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.PageChooserBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.PageChooserBlock() ), ), ] @@ -241,23 +231,23 @@ class Migration(migrations.Migration): ), ( "test_streamblock_in_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "nested_stream", - wagtail.core.blocks.StreamBlock( + wagtail.blocks.StreamBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ), ( "checklist", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), @@ -270,10 +260,10 @@ class Migration(migrations.Migration): ), ( "test_customstructblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ - ("field_a", wagtail.core.blocks.TextBlock()), - ("field_b", wagtail.core.blocks.TextBlock()), + ("field_a", wagtail.blocks.TextBlock()), + ("field_b", wagtail.blocks.TextBlock()), ] ), ), @@ -283,11 +273,11 @@ class Migration(migrations.Migration): ), ( "test_pagechooserblock", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ), ( "test_pagechooserblock_with_restricted_types", - wagtail.core.blocks.PageChooserBlock( + wagtail.blocks.PageChooserBlock( [ "wagtail_localize_test.TestHomePage", "wagtail_localize_test.TestPage", @@ -317,21 +307,21 @@ class Migration(migrations.Migration): ("test_embedblock", wagtail.embeds.blocks.EmbedBlock()), ( "test_chooserstructblock", - wagtail.core.blocks.StructBlock( - [("page", wagtail.core.blocks.PageChooserBlock())] + wagtail.blocks.StructBlock( + [("page", wagtail.blocks.PageChooserBlock())] ), ), ( "test_nestedchooserstructblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "nested_page", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), @@ -341,6 +331,7 @@ class Migration(migrations.Migration): ), ], blank=True, + use_json_field=True, ), ), ( @@ -446,66 +437,63 @@ class Migration(migrations.Migration): ("test_emailfield", models.EmailField(blank=True, max_length=254)), ("test_slugfield", models.SlugField(blank=True)), ("test_urlfield", models.URLField(blank=True)), - ("test_richtextfield", wagtail.core.fields.RichTextField(blank=True)), + ("test_richtextfield", wagtail.fields.RichTextField(blank=True)), + ( + "test_null_richtextfield", + wagtail.fields.RichTextField(blank=True, null=True), + ), ( "test_streamfield", - wagtail.core.fields.StreamField( + wagtail.fields.StreamField( [ ( "test_charblock", - wagtail.core.blocks.CharBlock(max_length=255), + wagtail.blocks.CharBlock(max_length=255), ), ( "test_textblock", - wagtail.core.blocks.TextBlock(label="text block"), - ), - ("test_emailblock", wagtail.core.blocks.EmailBlock()), - ("test_urlblock", wagtail.core.blocks.URLBlock()), - ("test_richtextblock", wagtail.core.blocks.RichTextBlock()), - ("test_rawhtmlblock", wagtail.core.blocks.RawHTMLBlock()), - ( - "test_blockquoteblock", - wagtail.core.blocks.BlockQuoteBlock(), + wagtail.blocks.TextBlock(label="text block"), ), + ("test_emailblock", wagtail.blocks.EmailBlock()), + ("test_urlblock", wagtail.blocks.URLBlock()), + ("test_richtextblock", wagtail.blocks.RichTextBlock()), + ("test_rawhtmlblock", wagtail.blocks.RawHTMLBlock()), + ("test_blockquoteblock", wagtail.blocks.BlockQuoteBlock()), ( "test_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ - ("field_a", wagtail.core.blocks.TextBlock()), - ("field_b", wagtail.core.blocks.TextBlock()), + ("field_a", wagtail.blocks.TextBlock()), + ("field_b", wagtail.blocks.TextBlock()), ] ), ), ( "test_listblock", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.TextBlock() - ), + wagtail.blocks.ListBlock(wagtail.blocks.TextBlock()), ), ( "test_listblock_in_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "title", - wagtail.core.blocks.CharBlock( - required=False - ), + wagtail.blocks.CharBlock(required=False), ), ( "items", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.field_block.CharBlock + wagtail.blocks.ListBlock( + wagtail.blocks.field_block.CharBlock ), ), ( "links_list", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.StructBlock( + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( [ ( "heading", - wagtail.core.blocks.CharBlock( + wagtail.blocks.CharBlock( blank=True, label="List Heading", required=False, @@ -513,8 +501,8 @@ class Migration(migrations.Migration): ), ( "pages", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.PageChooserBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.PageChooserBlock() ), ), ] @@ -526,35 +514,32 @@ class Migration(migrations.Migration): ), ( "test_nestedstreamblock", - wagtail.core.blocks.StreamBlock( + wagtail.blocks.StreamBlock( [ - ("block_a", wagtail.core.blocks.TextBlock()), - ("block_b", wagtail.core.blocks.TextBlock()), + ("block_a", wagtail.blocks.TextBlock()), + ("block_b", wagtail.blocks.TextBlock()), ( "block_l", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.CharBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.CharBlock() ), ), - ( - "chooser", - wagtail.core.blocks.PageChooserBlock(), - ), + ("chooser", wagtail.blocks.PageChooserBlock()), ( "chooser_in_struct", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), ), ( "chooser_in_list", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.PageChooserBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.PageChooserBlock() ), ), ] @@ -562,23 +547,23 @@ class Migration(migrations.Migration): ), ( "test_streamblock_in_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "nested_stream", - wagtail.core.blocks.StreamBlock( + wagtail.blocks.StreamBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ), ( "checklist", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), @@ -591,10 +576,10 @@ class Migration(migrations.Migration): ), ( "test_customstructblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ - ("field_a", wagtail.core.blocks.TextBlock()), - ("field_b", wagtail.core.blocks.TextBlock()), + ("field_a", wagtail.blocks.TextBlock()), + ("field_b", wagtail.blocks.TextBlock()), ] ), ), @@ -604,11 +589,11 @@ class Migration(migrations.Migration): ), ( "test_pagechooserblock", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ), ( "test_pagechooserblock_with_restricted_types", - wagtail.core.blocks.PageChooserBlock( + wagtail.blocks.PageChooserBlock( [ "wagtail_localize_test.TestHomePage", "wagtail_localize_test.TestPage", @@ -638,21 +623,21 @@ class Migration(migrations.Migration): ("test_embedblock", wagtail.embeds.blocks.EmbedBlock()), ( "test_chooserstructblock", - wagtail.core.blocks.StructBlock( - [("page", wagtail.core.blocks.PageChooserBlock())] + wagtail.blocks.StructBlock( + [("page", wagtail.blocks.PageChooserBlock())] ), ), ( "test_nestedchooserstructblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "nested_page", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), @@ -662,6 +647,7 @@ class Migration(migrations.Migration): ), ], blank=True, + use_json_field=True, ), ), ( @@ -685,67 +671,60 @@ class Migration(migrations.Migration): ("test_synchronized_urlfield", models.URLField(blank=True)), ( "test_synchronized_richtextfield", - wagtail.core.fields.RichTextField(blank=True), + wagtail.fields.RichTextField(blank=True), ), ( "test_synchronized_streamfield", - wagtail.core.fields.StreamField( + wagtail.fields.StreamField( [ ( "test_charblock", - wagtail.core.blocks.CharBlock(max_length=255), + wagtail.blocks.CharBlock(max_length=255), ), ( "test_textblock", - wagtail.core.blocks.TextBlock(label="text block"), - ), - ("test_emailblock", wagtail.core.blocks.EmailBlock()), - ("test_urlblock", wagtail.core.blocks.URLBlock()), - ("test_richtextblock", wagtail.core.blocks.RichTextBlock()), - ("test_rawhtmlblock", wagtail.core.blocks.RawHTMLBlock()), - ( - "test_blockquoteblock", - wagtail.core.blocks.BlockQuoteBlock(), + wagtail.blocks.TextBlock(label="text block"), ), + ("test_emailblock", wagtail.blocks.EmailBlock()), + ("test_urlblock", wagtail.blocks.URLBlock()), + ("test_richtextblock", wagtail.blocks.RichTextBlock()), + ("test_rawhtmlblock", wagtail.blocks.RawHTMLBlock()), + ("test_blockquoteblock", wagtail.blocks.BlockQuoteBlock()), ( "test_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ - ("field_a", wagtail.core.blocks.TextBlock()), - ("field_b", wagtail.core.blocks.TextBlock()), + ("field_a", wagtail.blocks.TextBlock()), + ("field_b", wagtail.blocks.TextBlock()), ] ), ), ( "test_listblock", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.TextBlock() - ), + wagtail.blocks.ListBlock(wagtail.blocks.TextBlock()), ), ( "test_listblock_in_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "title", - wagtail.core.blocks.CharBlock( - required=False - ), + wagtail.blocks.CharBlock(required=False), ), ( "items", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.field_block.CharBlock + wagtail.blocks.ListBlock( + wagtail.blocks.field_block.CharBlock ), ), ( "links_list", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.StructBlock( + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( [ ( "heading", - wagtail.core.blocks.CharBlock( + wagtail.blocks.CharBlock( blank=True, label="List Heading", required=False, @@ -753,8 +732,8 @@ class Migration(migrations.Migration): ), ( "pages", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.PageChooserBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.PageChooserBlock() ), ), ] @@ -766,35 +745,32 @@ class Migration(migrations.Migration): ), ( "test_nestedstreamblock", - wagtail.core.blocks.StreamBlock( + wagtail.blocks.StreamBlock( [ - ("block_a", wagtail.core.blocks.TextBlock()), - ("block_b", wagtail.core.blocks.TextBlock()), + ("block_a", wagtail.blocks.TextBlock()), + ("block_b", wagtail.blocks.TextBlock()), ( "block_l", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.CharBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.CharBlock() ), ), - ( - "chooser", - wagtail.core.blocks.PageChooserBlock(), - ), + ("chooser", wagtail.blocks.PageChooserBlock()), ( "chooser_in_struct", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), ), ( "chooser_in_list", - wagtail.core.blocks.ListBlock( - wagtail.core.blocks.PageChooserBlock() + wagtail.blocks.ListBlock( + wagtail.blocks.PageChooserBlock() ), ), ] @@ -802,23 +778,23 @@ class Migration(migrations.Migration): ), ( "test_streamblock_in_structblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "nested_stream", - wagtail.core.blocks.StreamBlock( + wagtail.blocks.StreamBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ), ( "checklist", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), @@ -831,10 +807,10 @@ class Migration(migrations.Migration): ), ( "test_customstructblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ - ("field_a", wagtail.core.blocks.TextBlock()), - ("field_b", wagtail.core.blocks.TextBlock()), + ("field_a", wagtail.blocks.TextBlock()), + ("field_b", wagtail.blocks.TextBlock()), ] ), ), @@ -844,11 +820,11 @@ class Migration(migrations.Migration): ), ( "test_pagechooserblock", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ), ( "test_pagechooserblock_with_restricted_types", - wagtail.core.blocks.PageChooserBlock( + wagtail.blocks.PageChooserBlock( [ "wagtail_localize_test.TestHomePage", "wagtail_localize_test.TestPage", @@ -878,21 +854,21 @@ class Migration(migrations.Migration): ("test_embedblock", wagtail.embeds.blocks.EmbedBlock()), ( "test_chooserstructblock", - wagtail.core.blocks.StructBlock( - [("page", wagtail.core.blocks.PageChooserBlock())] + wagtail.blocks.StructBlock( + [("page", wagtail.blocks.PageChooserBlock())] ), ), ( "test_nestedchooserstructblock", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "nested_page", - wagtail.core.blocks.StructBlock( + wagtail.blocks.StructBlock( [ ( "page", - wagtail.core.blocks.PageChooserBlock(), + wagtail.blocks.PageChooserBlock(), ) ] ), @@ -902,6 +878,7 @@ class Migration(migrations.Migration): ), ], blank=True, + use_json_field=True, ), ), ( diff --git a/wagtail_localize/test/models.py b/wagtail_localize/test/models.py index 195f0be54..b4412795c 100644 --- a/wagtail_localize/test/models.py +++ b/wagtail_localize/test/models.py @@ -218,6 +218,7 @@ class TestPage(Page): test_urlfield = models.URLField(blank=True) test_richtextfield = RichTextField(blank=True) + test_null_richtextfield = RichTextField(blank=True, null=True) test_streamfield = StreamField(TestStreamBlock, blank=True, **SF_KWARGS) test_snippet = models.ForeignKey( @@ -281,6 +282,7 @@ class TestPage(Page): TranslatableField("test_slugfield"), TranslatableField("test_urlfield"), TranslatableField("test_richtextfield"), + TranslatableField("test_null_richtextfield"), TranslatableField("test_streamfield"), TranslatableField("test_snippet"), TranslatableField("test_childobjects"), diff --git a/wagtail_localize/tests/test_strings.py b/wagtail_localize/tests/test_strings.py index 7bbe4cf57..722a43bcc 100644 --- a/wagtail_localize/tests/test_strings.py +++ b/wagtail_localize/tests/test_strings.py @@ -265,6 +265,9 @@ def test_extract_strings_2(self): ], ) + def test_extract_strings_from_none(self): + self.assertEqual(extract_strings(None), ("", [])) + def test_block_tag_in_inline_tag(self): # If an inline tag contains a block tag. The inline tag must be in the template. # Testing for issue https://github.com/mozilla/donate-wagtail/issues/586