from unittest.mock import Mock
from django.http import HttpResponseNotModified
from django.template import Template
from django.test import override_settings
from django_components import component
from django_components.middleware import ComponentDependencyMiddleware
from .django_test_setup import * # NOQA
from .test_templatetags import SimpleComponent
from .testutils import Django30CompatibleSimpleTestCase as SimpleTestCase
from .testutils import create_and_process_template_response
class SimpleComponentAlternate(component.Component):
template_name = "simple_template.html"
def get_context_data(self, variable):
return {}
class Media:
css = "style2.css"
js = "script2.js"
class SimpleComponentWithSharedDependency(component.Component):
template_name = "simple_template.html"
def get_context_data(self, variable, variable2="default"):
return {}
class Media:
css = ["style.css", "style2.css"]
js = ["script.js", "script2.js"]
class MultistyleComponent(component.Component):
template_name = "simple_template.html"
class Media:
css = ["style.css", "style2.css"]
js = ["script.js", "script2.js"]
@override_settings(COMPONENTS={"RENDER_DEPENDENCIES": True})
class ComponentMediaRenderingTests(SimpleTestCase):
def setUp(self):
# NOTE: component.registry is global, so need to clear before each test
component.registry.clear()
def test_no_dependencies_when_no_components_used(self):
component.registry.register(name="test", component=SimpleComponent)
template = Template(
"{% load component_tags %}{% component_dependencies %}"
)
rendered = create_and_process_template_response(template)
self.assertInHTML(''
''
"Variable: value\n"
), rendered)