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)