gadjo/tests/test_templatetags.py

74 lines
2.6 KiB
Python

import html
import urllib
from django import forms
from django.template import Context, Template
from django.test.client import RequestFactory
from pyquery import PyQuery
def test_start_timestamp():
t = Template('{% start_timestamp %}')
assert t.render(Context())
def test_querystring():
t = Template('{% querystring "name"="Ayers" "age"=20 %}')
ctx = Context({'request': RequestFactory().get('/')})
assert urllib.parse.parse_qs(urllib.parse.urlparse(html.unescape(t.render(ctx))).query) == {
'age': ['20'],
'name': ['Ayers'],
}
ctx = Context({'request': RequestFactory().get('/?age=10')})
assert urllib.parse.parse_qs(urllib.parse.urlparse(html.unescape(t.render(ctx))).query) == {
'age': ['20'],
'name': ['Ayers'],
}
t = Template('{% querystring "name"="Ayers" without "gender" %}')
ctx = Context({'request': RequestFactory().get('/')})
assert urllib.parse.parse_qs(urllib.parse.urlparse(html.unescape(t.render(ctx))).query) == {
'name': ['Ayers']
}
ctx = Context({'request': RequestFactory().get('/?gender=male')})
assert urllib.parse.parse_qs(urllib.parse.urlparse(html.unescape(t.render(ctx))).query) == {
'name': ['Ayers']
}
def test_with_template():
class ExampleForm(forms.Form):
text = forms.CharField(label='Text', max_length=50)
request = RequestFactory().get('/')
t = Template('{{ form|with_template }}')
ctx = Context({'request': request, 'form': ExampleForm()})
rendered = t.render(ctx)
assert PyQuery(rendered).find('input[type=text]')
assert not PyQuery(rendered).find('input[type=text]').attr['aria-invalid']
ctx = Context({'request': request, 'form': ExampleForm(data=request.GET)})
rendered = t.render(ctx)
assert (
PyQuery(rendered).find('input[type=text][aria-describedby]').attr['aria-describedby']
== 'error_id_text'
)
assert PyQuery(rendered).find('input[type=text]').attr['aria-invalid']
class ExampleForm(forms.Form):
text = forms.CharField(label='Text', max_length=50, help_text='Help text')
ctx = Context({'request': request, 'form': ExampleForm()})
rendered = t.render(ctx)
assert (
PyQuery(rendered).find('input[type=text][aria-describedby]').attr['aria-describedby']
== 'help_text_id_text'
)
ctx = Context({'request': request, 'form': ExampleForm(data=request.GET)})
rendered = t.render(ctx)
assert (
PyQuery(rendered).find('input[type=text][aria-describedby]').attr['aria-describedby']
== 'help_text_id_text error_id_text'
)