1 |
1 |
import base64
|
2 |
2 |
from unittest import mock
|
|
3 |
from html.parser import HTMLParser
|
3 |
4 |
|
4 |
5 |
import pytest
|
5 |
6 |
from django.conf import settings
|
6 |
7 |
from django.core.files import File
|
7 |
8 |
from django.template import Context, Template
|
8 |
9 |
from django.test import override_settings
|
9 |
10 |
from django.test.client import RequestFactory
|
10 |
11 |
from django.urls import reverse
|
... | ... | |
248 |
249 |
assert nav.count('background-image') == 1
|
249 |
250 |
assert nav.count('data-notification-count-url=') == 1
|
250 |
251 |
assert nav.count('data-pwa-user-name=""') == 1
|
251 |
252 |
|
252 |
253 |
nav = t.render(Context({'request': request, 'render_skeleton': True}))
|
253 |
254 |
assert 'data-pwa-user-name="{% block placeholder-user-name %}' in nav
|
254 |
255 |
|
255 |
256 |
|
|
257 |
def test_pwa_navigation_templatetag_internal_redirection(app):
|
|
258 |
page1 = Page(title='One', slug='one')
|
|
259 |
page2 = Page(title='Two', slug='two', redirect_url = 'https://www.example.org/test')
|
|
260 |
page3 = Page(title='Three', slug='three', redirect_url = '../test')
|
|
261 |
page4 = Page(title='Four', slug='four', redirect_url = '{{test_url}}plop')
|
|
262 |
page1.save()
|
|
263 |
page2.save()
|
|
264 |
page3.save()
|
|
265 |
page4.save()
|
|
266 |
entry1 = PwaNavigationEntry(link_page=page1, order=1)
|
|
267 |
entry2 = PwaNavigationEntry(link_page=page2, order=2)
|
|
268 |
entry3 = PwaNavigationEntry(link_page=page3, order=3)
|
|
269 |
entry4 = PwaNavigationEntry(link_page=page4, order=4)
|
|
270 |
entry1.save()
|
|
271 |
entry2.save()
|
|
272 |
entry3.save()
|
|
273 |
entry4.save()
|
|
274 |
t = Template('{% load pwa %}{% pwa_navigation %}')
|
|
275 |
assert t.render(Context({})) == ''
|
|
276 |
|
|
277 |
with override_settings(TEMPLATE_VARS={'pwa_display': 'standalone'}):
|
|
278 |
request = RequestFactory().get('/')
|
|
279 |
nav = t.render(Context({'request': request}))
|
|
280 |
|
|
281 |
class MyHTMLParser(HTMLParser):
|
|
282 |
def handle_starttag(self, tag, attrs):
|
|
283 |
if tag == 'a':
|
|
284 |
results.append(attrs[0][1])
|
|
285 |
|
|
286 |
parser = MyHTMLParser()
|
|
287 |
results = []
|
|
288 |
parser.feed(nav)
|
|
289 |
assert results == [
|
|
290 |
'http://testserver/one/',
|
|
291 |
'https://www.example.org/test',
|
|
292 |
'http://testserver/three/',
|
|
293 |
'http://testserver/four/',
|
|
294 |
]
|
|
295 |
|
|
296 |
|
256 |
297 |
def test_pwa_application_icon(app, admin_user):
|
257 |
298 |
app = login(app)
|
258 |
299 |
with override_settings(TEMPLATE_VARS={'pwa_display': 'standalone'}):
|
259 |
300 |
PwaSettings.objects.all().delete()
|
260 |
301 |
resp = app.get('/manage/pwa/')
|
261 |
302 |
resp.form['application_icon'] = Upload(
|
262 |
303 |
'test.png',
|
263 |
304 |
base64.decodebytes(
|
264 |
|
-
|