Add base csv widget tests
This commit is contained in:
parent
8aba6498f5
commit
9aa98cee97
|
@ -3,14 +3,12 @@ from __future__ import unicode_literals
|
|||
|
||||
from datetime import datetime, time, timedelta, tzinfo
|
||||
import decimal
|
||||
import unittest
|
||||
|
||||
import django
|
||||
from django import forms
|
||||
from django.test import TestCase, override_settings
|
||||
from django.utils.timezone import make_aware, get_default_timezone
|
||||
|
||||
from django_filters.widgets import RangeWidget
|
||||
from django_filters.widgets import BaseCSVWidget, CSVWidget, RangeWidget
|
||||
from django_filters.fields import (
|
||||
Lookup, LookupTypeField, BaseCSVField, BaseRangeField, RangeField,
|
||||
DateRangeField, DateTimeRangeField, TimeRangeField, IsoDateTimeField
|
||||
|
@ -196,6 +194,25 @@ class BaseCSVFieldTests(TestCase):
|
|||
with self.assertRaises(forms.ValidationError):
|
||||
self.field.clean(['a', 'b', 'c'])
|
||||
|
||||
def test_derived_widget(self):
|
||||
with self.assertRaises(AssertionError) as excinfo:
|
||||
BaseCSVField(widget=RangeWidget())
|
||||
|
||||
msg = str(excinfo.exception)
|
||||
self.assertIn("'BaseCSVField.widget' must be a widget class", msg)
|
||||
self.assertIn("RangeWidget", msg)
|
||||
|
||||
widget = CSVWidget()
|
||||
field = BaseCSVField(widget=widget)
|
||||
self.assertIs(field.widget, widget)
|
||||
|
||||
field = BaseCSVField(widget=CSVWidget)
|
||||
self.assertIsInstance(field.widget, CSVWidget)
|
||||
|
||||
field = BaseCSVField(widget=forms.Select)
|
||||
self.assertIsInstance(field.widget, forms.Select)
|
||||
self.assertIsInstance(field.widget, BaseCSVWidget)
|
||||
|
||||
|
||||
class BaseRangeFieldTests(TestCase):
|
||||
def setUp(self):
|
||||
|
|
|
@ -9,7 +9,7 @@ import warnings
|
|||
from django import forms
|
||||
from django.test import TestCase, override_settings
|
||||
|
||||
from django_filters import filters
|
||||
from django_filters import filters, widgets
|
||||
from django_filters.fields import (
|
||||
Lookup,
|
||||
RangeField,
|
||||
|
@ -1097,3 +1097,10 @@ class OrderingFilterTests(TestCase):
|
|||
with self.assertRaises(AssertionError) as ctx:
|
||||
f([0, 1, 2])
|
||||
self.assertEqual(str(ctx.exception), "'fields' must contain strings or (field name, param name) pairs.")
|
||||
|
||||
def test_widget(self):
|
||||
f = OrderingFilter()
|
||||
widget = f.field.widget
|
||||
|
||||
self.assertIsInstance(widget, widgets.BaseCSVWidget)
|
||||
self.assertIsInstance(widget, forms.Select)
|
||||
|
|
|
@ -5,6 +5,7 @@ from django.test import TestCase
|
|||
from django.forms import TextInput, Select
|
||||
|
||||
from django_filters.widgets import BooleanWidget
|
||||
from django_filters.widgets import BaseCSVWidget
|
||||
from django_filters.widgets import CSVWidget
|
||||
from django_filters.widgets import RangeWidget
|
||||
from django_filters.widgets import LinkWidget
|
||||
|
@ -182,6 +183,9 @@ class CSVWidgetTests(TestCase):
|
|||
self.assertHTMLEqual(w.render('price', ''), """
|
||||
<input type="text" name="price" />""")
|
||||
|
||||
self.assertHTMLEqual(w.render('price', '1'), """
|
||||
<input type="text" name="price" value="1" />""")
|
||||
|
||||
self.assertHTMLEqual(w.render('price', '1,2'), """
|
||||
<input type="text" name="price" value="1,2" />""")
|
||||
|
||||
|
@ -224,3 +228,54 @@ class CSVWidgetTests(TestCase):
|
|||
|
||||
result = w.value_from_datadict({}, {}, 'price')
|
||||
self.assertEqual(result, None)
|
||||
|
||||
|
||||
class CSVSelectTests(TestCase):
|
||||
class CSVSelect(BaseCSVWidget, Select):
|
||||
pass
|
||||
|
||||
def test_widget(self):
|
||||
w = self.CSVSelect(choices=((1, 'a'), (2, 'b')))
|
||||
self.assertHTMLEqual(
|
||||
w.render('price', None),
|
||||
"""
|
||||
<select name="price">
|
||||
<option value="1">a</option>
|
||||
<option value="2">b</option>
|
||||
</select>
|
||||
"""
|
||||
)
|
||||
|
||||
self.assertHTMLEqual(
|
||||
w.render('price', ''),
|
||||
"""
|
||||
<select name="price">
|
||||
<option value="1">a</option>
|
||||
<option value="2">b</option>
|
||||
</select>
|
||||
""")
|
||||
|
||||
self.assertHTMLEqual(
|
||||
w.render('price', '1'),
|
||||
"""
|
||||
<select name="price">
|
||||
<option selected="selected" value="1">a</option>
|
||||
<option value="2">b</option>
|
||||
</select>
|
||||
""")
|
||||
|
||||
self.assertHTMLEqual(
|
||||
w.render('price', '1,2'),
|
||||
"""
|
||||
<select name="price">
|
||||
<option value="1">a</option>
|
||||
<option value="2">b</option>
|
||||
</select>
|
||||
"""
|
||||
)
|
||||
|
||||
self.assertHTMLEqual(w.render('price', ['1', '2']), """
|
||||
<input type="text" name="price" value="1,2" />""")
|
||||
|
||||
self.assertHTMLEqual(w.render('price', [1, 2]), """
|
||||
<input type="text" name="price" value="1,2" />""")
|
||||
|
|
Loading…
Reference in New Issue