1from django.contrib.auth.models import AnonymousUser
2from django.http import HttpRequest
3from django.template import engines
4from django.test import TestCase
5
6from wagtail.core.models import PAGE_TEMPLATE_VAR, Page, Site
7from wagtail.tests.utils import WagtailTestUtils
8
9
10class TestCoreJinja(TestCase, WagtailTestUtils):
11
12    def setUp(self):
13        self.engine = engines['jinja2']
14
15        self.user = self.create_superuser(
16            username='test',
17            email='test@email.com',
18            password='password'
19        )
20        self.homepage = Page.objects.get(id=2)
21
22    def render(self, string, context=None, request_context=True):
23        if context is None:
24            context = {}
25
26        template = self.engine.from_string(string)
27        return template.render(context)
28
29    def dummy_request(self, user=None):
30        site = Site.objects.get(is_default_site=True)
31
32        request = HttpRequest()
33        request.META['HTTP_HOST'] = site.hostname
34        request.META['SERVER_PORT'] = site.port
35        request.user = user or AnonymousUser()
36        return request
37
38    def test_userbar(self):
39        content = self.render('{{ wagtailuserbar() }}', {
40            PAGE_TEMPLATE_VAR: self.homepage,
41            'request': self.dummy_request(self.user)})
42        self.assertIn("<!-- Wagtail user bar embed code -->", content)
43
44    def test_userbar_anonymous_user(self):
45        content = self.render('{{ wagtailuserbar() }}', {
46            PAGE_TEMPLATE_VAR: self.homepage,
47            'request': self.dummy_request()})
48
49        # Make sure nothing was rendered
50        self.assertEqual(content, '')
51