test_django.py 1.94 KB
Newer Older
1 2
from template_tests.test_response import test_processor_name

3
from django.template import RequestContext
4
from django.template.backends.django import DjangoTemplates
5
from django.test import RequestFactory, ignore_warnings
6
from django.utils.deprecation import RemovedInDjango110Warning
7

8 9 10 11 12 13 14
from .test_dummy import TemplateStringsTests


class DjangoTemplatesTests(TemplateStringsTests):

    engine_class = DjangoTemplates
    backend_name = 'django'
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

    def test_context_has_priority_over_template_context_processors(self):
        # See ticket #23789.
        engine = DjangoTemplates({
            'DIRS': [],
            'APP_DIRS': False,
            'NAME': 'django',
            'OPTIONS': {
                'context_processors': [test_processor_name],
            },
        })

        template = engine.from_string('{{ processors }}')
        request = RequestFactory().get('/')

        # Check that context processors run
        content = template.render({}, request)
        self.assertEqual(content, 'yes')

        # Check that context overrides context processors
        content = template.render({'processors': 'no'}, request)
        self.assertEqual(content, 'no')
37

38
    @ignore_warnings(category=RemovedInDjango110Warning)
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
    def test_request_context_conflicts_with_request(self):
        template = self.engine.from_string('hello')

        request = RequestFactory().get('/')
        request_context = RequestContext(request)
        # This doesn't raise an exception.
        template.render(request_context, request)

        other_request = RequestFactory().get('/')
        msg = ("render() was called with a RequestContext and a request "
               "argument which refer to different requests. Make sure "
               "that the context argument is a dict or at least that "
               "the two arguments refer to the same request.")
        with self.assertRaisesMessage(ValueError, msg):
            template.render(request_context, other_request)