diff --git a/wagtail/documents/tests/test_rich_text.py b/wagtail/documents/tests/test_rich_text.py index 8a442b33ee..6f09f33901 100644 --- a/wagtail/documents/tests/test_rich_text.py +++ b/wagtail/documents/tests/test_rich_text.py @@ -1,43 +1,59 @@ from bs4 import BeautifulSoup from django.test import TestCase -from wagtail.documents.rich_text import DocumentLinkHandler as DocumentFrontendHandler -from wagtail.documents.rich_text.editor_html import DocumentLinkHandler as DocumentEditorHTMLHandler +from wagtail.documents.rich_text import DocumentLinkHandler as FrontendDocumentLinkHandler +from wagtail.documents.rich_text.editor_html import \ + DocumentLinkHandler as EditorHtmlDocumentLinkHandler -class TestDocumentRichTextLinkHandler(TestCase): +class TestEditorHtmlDocumentLinkHandler(TestCase): fixtures = ['test.json'] def test_get_db_attributes(self): soup = BeautifulSoup('foo', 'html5lib') tag = soup.a - result = DocumentEditorHTMLHandler.get_db_attributes(tag) - self.assertEqual(result, - {'id': 'test-id'}) + result = EditorHtmlDocumentLinkHandler.get_db_attributes(tag) + self.assertEqual( + result, + {'id': 'test-id'} + ) - def test_expand_db_attributes(self): - result = DocumentFrontendHandler.expand_db_attributes({'id': 1}) - self.assertEqual(result, - '') + def test_expand_db_attributes_for_editor(self): + result = EditorHtmlDocumentLinkHandler.expand_db_attributes({'id': 1}) + self.assertEqual( + result, + '' + ) + + def test_expand_db_attributes_for_editor_preserves_id_of_nonexistent_document(self): + result = EditorHtmlDocumentLinkHandler.expand_db_attributes({'id': 0}) + self.assertEqual( + result, + '' + ) + + def test_expand_db_attributes_for_editor_with_missing_id(self): + result = EditorHtmlDocumentLinkHandler.expand_db_attributes({}) + self.assertEqual( + result, + '' + ) + + +class TestFrontendDocumentLinkHandler(TestCase): + fixtures = ['test.json'] + + def test_expand_db_attributes_for_frontend(self): + result = FrontendDocumentLinkHandler.expand_db_attributes({'id': 1}) + self.assertEqual( + result, + '' + ) def test_expand_db_attributes_document_does_not_exist(self): - result = DocumentFrontendHandler.expand_db_attributes({'id': 0}) + result = FrontendDocumentLinkHandler.expand_db_attributes({'id': 0}) self.assertEqual(result, '') def test_expand_db_attributes_with_missing_id(self): - result = DocumentFrontendHandler.expand_db_attributes({}) + result = FrontendDocumentLinkHandler.expand_db_attributes({}) self.assertEqual(result, '') - - def test_expand_db_attributes_for_editor(self): - result = DocumentEditorHTMLHandler.expand_db_attributes({'id': 1}) - self.assertEqual(result, - '') - - def test_expand_db_attributes_for_editor_preserves_id_of_nonexistent_document(self): - result = DocumentEditorHTMLHandler.expand_db_attributes({'id': 0}) - self.assertEqual(result, - '') - - def test_expand_db_attributes_for_editor_with_missing_id(self): - result = DocumentEditorHTMLHandler.expand_db_attributes({}) - self.assertEqual(result, '') diff --git a/wagtail/images/tests/test_rich_text.py b/wagtail/images/tests/test_rich_text.py index d981abaadb..4f688ad613 100644 --- a/wagtail/images/tests/test_rich_text.py +++ b/wagtail/images/tests/test_rich_text.py @@ -1,87 +1,116 @@ from bs4 import BeautifulSoup from django.test import TestCase -from wagtail.images.rich_text import ImageEmbedHandler as ImageFrontendHandler -from wagtail.images.rich_text.editor_html import ImageEmbedHandler as ImageEditorHTMLHandler +from wagtail.images.rich_text import ImageEmbedHandler as FrontendImageEmbedHandler +from wagtail.images.rich_text.editor_html import ImageEmbedHandler as EditorHtmlImageEmbedHandler from wagtail.tests.utils import WagtailTestUtils from .utils import Image, get_test_image_file -class TestImageEmbedHandlers(TestCase, WagtailTestUtils): +class TestEditorHtmlImageEmbedHandler(TestCase, WagtailTestUtils): def test_get_db_attributes(self): soup = BeautifulSoup( 'foo', 'html5lib' ) tag = soup.b - result = ImageEditorHTMLHandler.get_db_attributes(tag) - self.assertEqual(result, - {'alt': 'test-alt', - 'id': 'test-id', - 'format': 'test-format'}) - - def test_expand_db_attributes_image_does_not_exist(self): - result = ImageFrontendHandler.expand_db_attributes({'id': 0}) - self.assertEqual(result, '') - - def test_expand_db_attributes_not_for_editor(self): - Image.objects.create(id=1, title='Test', file=get_test_image_file()) - result = ImageFrontendHandler.expand_db_attributes( - {'id': 1, - 'alt': 'test-alt', - 'format': 'left'} + result = EditorHtmlImageEmbedHandler.get_db_attributes(tag) + self.assertEqual( + result, + { + 'alt': 'test-alt', + 'id': 'test-id', + 'format': 'test-format', + } ) - self.assertTagInHTML('', result, allow_extra_attrs=True) - - def test_expand_db_attributes_escapes_alt_text(self): - Image.objects.create(id=1, title='Test', file=get_test_image_file()) - result = ImageFrontendHandler.expand_db_attributes( - {'id': 1, - 'alt': 'Arthur "two sheds" Jackson', - 'format': 'left'}, - ) - self.assertIn('alt="Arthur "two sheds" Jackson"', result) - - def test_expand_db_attributes_with_missing_alt(self): - Image.objects.create(id=1, title='Test', file=get_test_image_file()) - result = ImageFrontendHandler.expand_db_attributes( - {'id': 1, - 'format': 'left'}, - ) - self.assertTagInHTML('', result, allow_extra_attrs=True) def test_expand_db_attributes_for_editor(self): Image.objects.create(id=1, title='Test', file=get_test_image_file()) - result = ImageEditorHTMLHandler.expand_db_attributes( - {'id': 1, - 'alt': 'test-alt', - 'format': 'left'}, - ) + result = EditorHtmlImageEmbedHandler.expand_db_attributes({ + 'id': 1, + 'alt': 'test-alt', + 'format': 'left', + }) self.assertTagInHTML( - '', result, allow_extra_attrs=True) + ( + '' + ), + result, + allow_extra_attrs=True + ) + + def test_expand_db_attributes_for_editor_nonexistent_image(self): + self.assertEqual( + EditorHtmlImageEmbedHandler.expand_db_attributes({'id': 0}), + '' + ) def test_expand_db_attributes_for_editor_escapes_alt_text(self): Image.objects.create(id=1, title='Test', file=get_test_image_file()) - result = ImageEditorHTMLHandler.expand_db_attributes( - {'id': 1, - 'alt': 'Arthur "two sheds" Jackson', - 'format': 'left'}, - ) + result = EditorHtmlImageEmbedHandler.expand_db_attributes({ + 'id': 1, + 'alt': 'Arthur "two sheds" Jackson', + 'format': 'left', + }) + self.assertTagInHTML( - '', + ( + '' + ), result, allow_extra_attrs=True) self.assertIn('alt="Arthur "two sheds" Jackson"', result) def test_expand_db_attributes_for_editor_with_missing_alt(self): Image.objects.create(id=1, title='Test', file=get_test_image_file()) - result = ImageEditorHTMLHandler.expand_db_attributes( - {'id': 1, - 'format': 'left'}, - ) + result = EditorHtmlImageEmbedHandler.expand_db_attributes({ + 'id': 1, + 'format': 'left', + }) self.assertTagInHTML( - '', result, allow_extra_attrs=True) + ( + '' + ), + result, + allow_extra_attrs=True + ) + + +class TestFrontendImageEmbedHandler(TestCase, WagtailTestUtils): + def test_expand_db_attributes_for_frontend(self): + Image.objects.create(id=1, title='Test', file=get_test_image_file()) + result = FrontendImageEmbedHandler.expand_db_attributes({ + 'id': 1, + 'alt': 'test-alt', + 'format': 'left', + }) + self.assertTagInHTML( + '', + result, + allow_extra_attrs=True + ) + + def test_expand_db_attributes_for_frontend_with_nonexistent_image(self): + result = FrontendImageEmbedHandler.expand_db_attributes({'id': 0}) + self.assertEqual(result, '') + + def test_expand_db_attributes_for_frontend_escapes_alt_text(self): + Image.objects.create(id=1, title='Test', file=get_test_image_file()) + result = FrontendImageEmbedHandler.expand_db_attributes({ + 'id': 1, + 'alt': 'Arthur "two sheds" Jackson', + 'format': 'left', + }) + self.assertIn('alt="Arthur "two sheds" Jackson"', result) + + def test_expand_db_attributes_for_frontend_with_missing_alt(self): + Image.objects.create(id=1, title='Test', file=get_test_image_file()) + result = FrontendImageEmbedHandler.expand_db_attributes({ + 'id': 1, + 'format': 'left', + }) + self.assertTagInHTML('', result, allow_extra_attrs=True)