109 lines
3.5 KiB
Python
109 lines
3.5 KiB
Python
|
|
import warnings
|
|
from django.test import TestCase
|
|
|
|
from django_filters import FilterSet
|
|
from django_filters.filters import CharFilter
|
|
from .models import User
|
|
from .models import NetworkSetting
|
|
from .models import SubnetMaskField
|
|
|
|
|
|
class UserFilter(FilterSet):
|
|
class Meta:
|
|
model = User
|
|
fields = '__all__'
|
|
|
|
|
|
class FilterSetContainerDeprecationTests(TestCase):
|
|
|
|
def test__iter__notification(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter("always")
|
|
|
|
[obj for obj in UserFilter()]
|
|
|
|
self.assertEqual(len(w), 1)
|
|
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
|
|
|
|
def test__getitem__notification(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter("always")
|
|
|
|
with self.assertRaises(IndexError):
|
|
UserFilter()[0]
|
|
|
|
self.assertEqual(len(w), 1)
|
|
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
|
|
|
|
def test__len__notification(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter("always")
|
|
|
|
len(UserFilter())
|
|
|
|
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
|
|
|
|
def test__count__notification(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter("always")
|
|
|
|
UserFilter().count()
|
|
|
|
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
|
|
|
|
|
|
class FilterSetMetaDeprecationTests(TestCase):
|
|
def test_fields_not_set(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter("always")
|
|
|
|
class F(FilterSet):
|
|
class Meta:
|
|
model = User
|
|
|
|
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
|
|
self.assertIn("Not setting Meta.fields with Meta.model is undocumented behavior", str(w[-1].message))
|
|
|
|
def test_fields_is_none(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter("always")
|
|
|
|
class F(FilterSet):
|
|
class Meta:
|
|
model = User
|
|
fields = None
|
|
|
|
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
|
|
self.assertIn("Setting 'Meta.fields = None' is undocumented behavior", str(w[-1].message))
|
|
|
|
def test_fields_not_set_ignore_unknown(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter("always")
|
|
|
|
class F(FilterSet):
|
|
class Meta:
|
|
model = NetworkSetting
|
|
|
|
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
|
|
self.assertIn("Not setting Meta.fields with Meta.model is undocumented behavior", str(w[-1].message))
|
|
|
|
self.assertNotIn('mask', F.base_filters.keys())
|
|
|
|
def test_fields_not_set_with_override(self):
|
|
with warnings.catch_warnings(record=True) as w:
|
|
warnings.simplefilter("always")
|
|
|
|
class F(FilterSet):
|
|
filter_overrides = {
|
|
SubnetMaskField: {'filter_class': CharFilter}
|
|
}
|
|
|
|
class Meta:
|
|
model = NetworkSetting
|
|
|
|
self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
|
|
self.assertIn("Not setting Meta.fields with Meta.model is undocumented behavior", str(w[-1].message))
|
|
|
|
self.assertEqual(list(F.base_filters.keys()), ['ip', 'mask'])
|