Only render dependencies that are used of a specific page (#52)

Co-authored-by: rbeard0330 <@dul2k3BKW6m>
This commit is contained in:
Emil Stenström 2021-03-24 22:47:48 +01:00 committed by GitHub
parent cc8db8056e
commit 57a5aa0f4b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 2576 additions and 99 deletions

View file

@ -1,7 +1,43 @@
from django.test import SimpleTestCase
from unittest.mock import Mock
from django.template import Context
from django.template.response import TemplateResponse
from django.test import SimpleTestCase, TestCase
from django_components.middleware import ComponentDependencyMiddleware
# Create middleware instance
response_stash = None
middleware = ComponentDependencyMiddleware(get_response=lambda _: response_stash)
class Django30CompatibleSimpleTestCase(SimpleTestCase):
def assertHTMLEqual(self, left, right):
left = left.replace(' type="text/javascript"', '')
super(Django30CompatibleSimpleTestCase, self).assertHTMLEqual(left, right)
def assertInHTML(self, needle, haystack, count=None, msg_prefix=''):
haystack = haystack.replace(' type="text/javascript"', '')
super().assertInHTML(needle, haystack, count, msg_prefix)
class Django30CompatibleTestCase(Django30CompatibleSimpleTestCase, TestCase):
pass
request = Mock()
mock_template = Mock()
def create_and_process_template_response(template, context=None, use_middleware=True):
context = context if context is not None else Context({})
mock_template.render = lambda context, _: template.render(context)
response = TemplateResponse(request, mock_template, context)
if use_middleware:
response.render()
global response_stash
response_stash = response
response = middleware(request)
else:
response.render()
return response.content.decode('utf-8')