83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
import os
|
|
from distutils.version import StrictVersion
|
|
|
|
import django
|
|
from django.test import TestCase
|
|
from django.template import Template, Context
|
|
from django import forms
|
|
|
|
from .templatetags import bootstrap
|
|
|
|
TEST_DIR = os.path.abspath(os.path.join(__file__, '..'))
|
|
|
|
|
|
CHOICES = (
|
|
(0, 'Zero'),
|
|
(1, 'One'),
|
|
(2, 'Two'),
|
|
)
|
|
|
|
try:
|
|
# required by Django 1.7 and later
|
|
django.setup()
|
|
except:
|
|
pass
|
|
|
|
class ExampleForm(forms.Form):
|
|
char_field = forms.CharField(required=False)
|
|
choice_field = forms.ChoiceField(choices=CHOICES, required=False)
|
|
radio_choice = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect, required=False)
|
|
multiple_choice = forms.MultipleChoiceField(choices=CHOICES, required=False)
|
|
multiple_checkbox = forms.MultipleChoiceField(choices=CHOICES, widget=forms.CheckboxSelectMultiple, required=False)
|
|
file_fied = forms.FileField(required=False)
|
|
password_field = forms.CharField(widget=forms.PasswordInput, required=False)
|
|
textarea = forms.CharField(widget=forms.Textarea, required=False)
|
|
boolean_field = forms.BooleanField(required=False)
|
|
|
|
|
|
class BootstrapTemplateTagTests(TestCase):
|
|
maxDiff = None
|
|
|
|
def test_basic_form(self):
|
|
form = ExampleForm()
|
|
|
|
html = Template("{% load bootstrap %}{{ form|bootstrap }}").render(Context({'form': form}))
|
|
|
|
|
|
if StrictVersion(django.get_version()) >= StrictVersion('1.7'):
|
|
fixture = 'basic.html'
|
|
elif StrictVersion(django.get_version()) >= StrictVersion('1.6'):
|
|
fixture = 'basic_dj16.html'
|
|
else:
|
|
fixture = 'basic_old.html'
|
|
|
|
tpl = os.path.join('fixtures', fixture)
|
|
with open(os.path.join(TEST_DIR, tpl)) as f:
|
|
content = f.read()
|
|
|
|
self.assertHTMLEqual(html, content)
|
|
|
|
def test_horizontal_form(self):
|
|
form = ExampleForm()
|
|
|
|
html = Template("{% load bootstrap %}{{ form|bootstrap_horizontal }}").render(Context({'form': form}))
|
|
|
|
if StrictVersion(django.get_version()) >= StrictVersion('1.7'):
|
|
fixture = 'horizontal.html'
|
|
elif StrictVersion(django.get_version()) >= StrictVersion('1.6'):
|
|
fixture = 'horizontal_dj16.html'
|
|
else:
|
|
fixture = 'horizontal_old.html'
|
|
|
|
tpl = os.path.join('fixtures', fixture)
|
|
with open(os.path.join(TEST_DIR, tpl)) as f:
|
|
content = f.read()
|
|
|
|
self.assertHTMLEqual(html, content)
|
|
|
|
def test_bound_field(self):
|
|
form = ExampleForm(data={'char_field': 'asdf'})
|
|
|
|
self.assertTrue(form.is_bound)
|
|
rendered_template = bootstrap.bootstrap(form['char_field'])
|