tests.py 5.62 KB
Newer Older
1
from django.test import TestCase, ignore_warnings, override_settings
2
from django.test.utils import require_jinja2
3
from django.utils.deprecation import RemovedInDjango20Warning
4

Jason Myers's avatar
Jason Myers committed
5

6
@override_settings(
7
    ROOT_URLCONF='shortcuts.urls',
8
)
9
class ShortcutTests(TestCase):
10

11
    def test_render_to_response(self):
12
        response = self.client.get('/render_to_response/')
13
        self.assertEqual(response.status_code, 200)
14
        self.assertEqual(response.content, b'FOO.BAR..\n')
15
        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
16

17 18 19 20 21
    def test_render_to_response_with_multiple_templates(self):
        response = self.client.get('/render_to_response/multiple_templates/')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content, b'FOO.BAR..\n')

22
    @ignore_warnings(category=RemovedInDjango20Warning)
23
    def test_render_to_response_with_request_context(self):
24
        response = self.client.get('/render_to_response/request_context/')
25
        self.assertEqual(response.status_code, 200)
26
        self.assertEqual(response.content, b'FOO.BAR../render_to_response/request_context/\n')
27
        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
28

29
    def test_render_to_response_with_content_type(self):
30
        response = self.client.get('/render_to_response/content_type/')
31
        self.assertEqual(response.status_code, 200)
32
        self.assertEqual(response.content, b'FOO.BAR..\n')
33
        self.assertEqual(response['Content-Type'], 'application/x-rendertest')
34

35
    @ignore_warnings(category=RemovedInDjango20Warning)
36
    def test_render_to_response_with_dirs(self):
37
        response = self.client.get('/render_to_response/dirs/')
38 39 40 41
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content, b'spam eggs\n')
        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')

42 43 44 45 46 47 48 49 50 51 52 53 54 55
    def test_render_to_response_with_status(self):
        response = self.client.get('/render_to_response/status/')
        self.assertEqual(response.status_code, 403)
        self.assertEqual(response.content, b'FOO.BAR..\n')

    @require_jinja2
    def test_render_to_response_with_using(self):
        response = self.client.get('/render_to_response/using/')
        self.assertEqual(response.content, b'DTL\n')
        response = self.client.get('/render_to_response/using/?using=django')
        self.assertEqual(response.content, b'DTL\n')
        response = self.client.get('/render_to_response/using/?using=jinja2')
        self.assertEqual(response.content, b'Jinja2\n')

56
    @ignore_warnings(category=RemovedInDjango20Warning)
57 58 59 60 61 62
    def test_render_to_response_with_context_instance_misuse(self):
        """
        For backwards-compatibility, ensure that it's possible to pass a
        RequestContext instance in the dictionary argument instead of the
        context_instance argument.
        """
63
        response = self.client.get('/render_to_response/context_instance_misuse/')
64 65
        self.assertContains(response, 'context processor output')

66
    def test_render(self):
67
        response = self.client.get('/render/')
68
        self.assertEqual(response.status_code, 200)
69
        self.assertEqual(response.content, b'FOO.BAR../render/\n')
70
        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
71
        self.assertFalse(hasattr(response.context.request, 'current_app'))
72

73 74 75
    def test_render_with_multiple_templates(self):
        response = self.client.get('/render/multiple_templates/')
        self.assertEqual(response.status_code, 200)
76
        self.assertEqual(response.content, b'FOO.BAR../render/multiple_templates/\n')
77

78
    @ignore_warnings(category=RemovedInDjango20Warning)
79
    def test_render_with_base_context(self):
80
        response = self.client.get('/render/base_context/')
81
        self.assertEqual(response.status_code, 200)
82
        self.assertEqual(response.content, b'FOO.BAR..\n')
83
        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
84

85
    def test_render_with_content_type(self):
86
        response = self.client.get('/render/content_type/')
87
        self.assertEqual(response.status_code, 200)
88
        self.assertEqual(response.content, b'FOO.BAR../render/content_type/\n')
89
        self.assertEqual(response['Content-Type'], 'application/x-rendertest')
90

91
    def test_render_with_status(self):
92
        response = self.client.get('/render/status/')
93
        self.assertEqual(response.status_code, 403)
94
        self.assertEqual(response.content, b'FOO.BAR../render/status/\n')
95

96 97 98 99 100 101 102 103 104
    @require_jinja2
    def test_render_with_using(self):
        response = self.client.get('/render/using/')
        self.assertEqual(response.content, b'DTL\n')
        response = self.client.get('/render/using/?using=django')
        self.assertEqual(response.content, b'DTL\n')
        response = self.client.get('/render/using/?using=jinja2')
        self.assertEqual(response.content, b'Jinja2\n')

105
    @ignore_warnings(category=RemovedInDjango20Warning)
106
    def test_render_with_current_app(self):
107
        response = self.client.get('/render/current_app/')
108
        self.assertEqual(response.context.request.current_app, "foobar_app")
109

110
    @ignore_warnings(category=RemovedInDjango20Warning)
111
    def test_render_with_dirs(self):
112
        response = self.client.get('/render/dirs/')
113 114 115 116
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content, b'spam eggs\n')
        self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')

117
    @ignore_warnings(category=RemovedInDjango20Warning)
118
    def test_render_with_current_app_conflict(self):
119
        with self.assertRaises(ValueError):
120
            self.client.get('/render/current_app_conflict/')