deb-python-django-bootstrap.../bootstrapform/tests.py
2016-09-11 09:29:41 -05:00

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'])