from django.template import Template
from django.test import override_settings
from .django_test_setup import * # NOQA
from django_components import component
from .test_templatetags import SimpleComponent
from .testutils import create_and_process_template_response, Django30CompatibleSimpleTestCase as SimpleTestCase
class SimpleComponentAlternate(component.Component):
def context(self, variable):
return {}
def template(self, context):
return "simple_template.html"
class Media:
css = "style2.css"
js = "script2.js"
class SimpleComponentWithSharedDependency(component.Component):
def context(self, variable, variable2="default"):
return {
"variable": variable,
"variable2": variable2,
}
def template(self, context):
return "simple_template.html"
class Media:
css = ["style.css", "style2.css"]
js = ["script.js", "script2.js"]
class MultistyleComponent(component.Component):
def template(self, context):
return "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('', rendered, count=0)
self.assertInHTML('', rendered, count=0)
def test_no_js_dependencies_when_no_components_used(self):
component.registry.register(name="test", component=SimpleComponent)
template = Template("{% load component_tags %}{% component_js_dependencies %}")
rendered = create_and_process_template_response(template)
self.assertInHTML('', rendered, count=0)
def test_single_component_dependencies_render_when_used(self):
component.registry.register(name="test", component=SimpleComponent)
template = Template("{% load component_tags %}{% component_dependencies %}"
"{% component 'test' variable='foo' %}")
rendered = create_and_process_template_response(template)
self.assertInHTML('', rendered, count=1)
self.assertInHTML('