Standardize embeds rich text tests

pull/5211/head
Andy Chosak 2019-03-27 11:35:04 -04:00 zatwierdzone przez Matt Westcott
rodzic 683a50fa47
commit a09b7b5c6b
3 zmienionych plików z 110 dodań i 103 usunięć

Wyświetl plik

@ -4,14 +4,12 @@ import urllib.request
from unittest.mock import patch
from urllib.error import URLError
from bs4 import BeautifulSoup
from django import template
from django.core.exceptions import ValidationError
from django.test import TestCase, override_settings
from django.urls import reverse
from wagtail.core import blocks
from wagtail.core.rich_text import expand_db_html
from wagtail.embeds import oembed_providers
from wagtail.embeds.blocks import EmbedBlock, EmbedValue
from wagtail.embeds.embeds import get_embed
@ -21,8 +19,6 @@ from wagtail.embeds.finders.embedly import EmbedlyFinder as EmbedlyFinder
from wagtail.embeds.finders.embedly import AccessDeniedEmbedlyException, EmbedlyException
from wagtail.embeds.finders.oembed import OEmbedFinder as OEmbedFinder
from wagtail.embeds.models import Embed
from wagtail.embeds.rich_text import MediaEmbedHandler as MediaFrontendHandler
from wagtail.embeds.rich_text.editor_html import MediaEmbedHandler as MediaEditorHTMLHandler
from wagtail.embeds.templatetags.wagtailembeds_tags import embed_tag
from wagtail.tests.utils import WagtailTestUtils
@ -564,102 +560,3 @@ class TestEmbedBlock(TestCase):
with self.assertRaises(ValidationError):
required_block.clean(
EmbedValue('http://no-oembed-here.com/something'))
class TestMediaEmbedHandlers(TestCase):
def test_get_db_attributes(self):
soup = BeautifulSoup('<b data-url="test-url">foo</b>', 'html5lib')
tag = soup.b
result = MediaEditorHTMLHandler.get_db_attributes(tag)
self.assertEqual(result,
{'url': 'test-url'})
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_db_attributes_for_editor(self, get_embed):
get_embed.return_value = Embed(
url='http://www.youtube.com/watch/',
max_width=None,
type='video',
html='test html',
title='test title',
author_name='test author name',
provider_name='test provider name',
thumbnail_url='http://test/thumbnail.url',
width=1000,
height=1000,
)
result = MediaEditorHTMLHandler.expand_db_attributes(
{'url': 'http://www.youtube.com/watch/'}
)
self.assertIn(
(
'<div class="embed-placeholder" contenteditable="false" data-embedtype="media"'
' data-url="http://www.youtube.com/watch/">'
),
result
)
self.assertIn('<h3>test title</h3>', result)
self.assertIn('<p>URL: http://www.youtube.com/watch/</p>', result)
self.assertIn('<p>Provider: test provider name</p>', result)
self.assertIn('<p>Author: test author name</p>', result)
self.assertIn('<img src="http://test/thumbnail.url" alt="test title">', result)
@patch('wagtail.embeds.embeds.get_embed')
def test_test_expand_db_attributes_for_editor_catches_embed_not_found(self, get_embed):
get_embed.side_effect = EmbedNotFoundException
result = MediaEditorHTMLHandler.expand_db_attributes(
{'url': 'http://www.youtube.com/watch/'},
)
self.assertEqual(result, '')
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_db_attributes(self, get_embed):
get_embed.return_value = Embed(
url='http://www.youtube.com/watch/',
max_width=None,
type='video',
html='test html',
title='test title',
author_name='test author name',
provider_name='test provider name',
thumbnail_url='htto://test/thumbnail.url',
width=1000,
height=1000,
)
result = MediaFrontendHandler.expand_db_attributes(
{'url': 'http://www.youtube.com/watch/'}
)
self.assertIn('test html', result)
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_db_attributes_catches_embed_not_found(self, get_embed):
get_embed.side_effect = EmbedNotFoundException
result = MediaFrontendHandler.expand_db_attributes(
{'url': 'http://www.youtube.com/watch/'}
)
self.assertEqual(result, '')
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_html_escaping_end_to_end(self, get_embed):
get_embed.return_value = Embed(
url='http://www.youtube.com/watch/',
max_width=None,
type='video',
html='test html',
title='test title',
author_name='test author name',
provider_name='test provider name',
thumbnail_url='htto://test/thumbnail.url',
width=1000,
height=1000,
)
result = expand_db_html('<p>1 2 <embed embedtype="media" url="https://www.youtube.com/watch?v=O7D-1RG-VRk&amp;t=25" /> 3 4</p>')
self.assertIn('test html', result)
get_embed.assert_called_with('https://www.youtube.com/watch?v=O7D-1RG-VRk&t=25')

Wyświetl plik

@ -0,0 +1,110 @@
from unittest.mock import patch
from bs4 import BeautifulSoup
from django.test import TestCase
from wagtail.core.rich_text import expand_db_html
from wagtail.embeds.exceptions import EmbedNotFoundException
from wagtail.embeds.models import Embed
from wagtail.embeds.rich_text import MediaEmbedHandler as FrontendMediaEmbedHandler
from wagtail.embeds.rich_text.editor_html import MediaEmbedHandler as EditorHtmlMediaEmbedHandler
class TestEditorHtmlMediaEmbedHandler(TestCase):
def test_get_db_attributes(self):
soup = BeautifulSoup('<b data-url="test-url">foo</b>', 'html5lib')
tag = soup.b
result = EditorHtmlMediaEmbedHandler.get_db_attributes(tag)
self.assertEqual(
result,
{'url': 'test-url'}
)
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_db_attributes_for_editor(self, get_embed):
get_embed.return_value = Embed(
url='http://www.youtube.com/watch/',
max_width=None,
type='video',
html='test html',
title='test title',
author_name='test author name',
provider_name='test provider name',
thumbnail_url='http://test/thumbnail.url',
width=1000,
height=1000,
)
result = EditorHtmlMediaEmbedHandler.expand_db_attributes({
'url': 'http://www.youtube.com/watch/',
})
self.assertIn(
(
'<div class="embed-placeholder" contenteditable="false" data-embedtype="media"'
' data-url="http://www.youtube.com/watch/">'
),
result
)
self.assertIn('<h3>test title</h3>', result)
self.assertIn('<p>URL: http://www.youtube.com/watch/</p>', result)
self.assertIn('<p>Provider: test provider name</p>', result)
self.assertIn('<p>Author: test author name</p>', result)
self.assertIn('<img src="http://test/thumbnail.url" alt="test title">', result)
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_db_attributes_for_editor_catches_embed_not_found(self, get_embed):
get_embed.side_effect = EmbedNotFoundException
result = EditorHtmlMediaEmbedHandler.expand_db_attributes({
'url': 'http://www.youtube.com/watch/',
})
self.assertEqual(result, '')
class TestFrontendMediaEmbedHandler(TestCase):
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_db_attributes_for_frontend(self, get_embed):
get_embed.return_value = Embed(
url='http://www.youtube.com/watch/',
max_width=None,
type='video',
html='test html',
title='test title',
author_name='test author name',
provider_name='test provider name',
thumbnail_url='http://test/thumbnail.url',
width=1000,
height=1000,
)
result = FrontendMediaEmbedHandler.expand_db_attributes({
'url': 'http://www.youtube.com/watch/',
})
self.assertIn('test html', result)
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_db_attributes_for_frontend_catches_embed_not_found(self, get_embed):
get_embed.side_effect = EmbedNotFoundException
result = FrontendMediaEmbedHandler.expand_db_attributes({
'url': 'http://www.youtube.com/watch/',
})
self.assertEqual(result, '')
@patch('wagtail.embeds.embeds.get_embed')
def test_expand_html_escaping_end_to_end(self, get_embed):
get_embed.return_value = Embed(
url='http://www.youtube.com/watch/',
max_width=None,
type='video',
html='test html',
title='test title',
author_name='test author name',
provider_name='test provider name',
thumbnail_url='http://test/thumbnail.url',
width=1000,
height=1000,
)
result = expand_db_html('<p>1 2 <embed embedtype="media" url="https://www.youtube.com/watch?v=O7D-1RG-VRk&amp;t=25" /> 3 4</p>')
self.assertIn('test html', result)
get_embed.assert_called_with('https://www.youtube.com/watch?v=O7D-1RG-VRk&t=25')