class ActivityFilterSet(FilterSet): subjects = SubjectFilter() num_people = NumericRangeFilter(widget=RangeWidget(attrs={ 'min': 0, 'max': 40 }), lookup_expr='overlap') duration = IncludeNullNumericRangeFilter(widget=RangeWidget(attrs={ 'min': 0, 'max': 360 }), lookup_expr='range') class Meta: model = Activity fields = [ 'subjects', 'location', 'group_feature', 'num_people', 'duration' ]
def test_zero_to_zero(self): qs = mock.Mock(spec=['filter']) value = mock.Mock(start=0, stop=0) f = NumericRangeFilter() f.filter(qs, value) qs.filter.assert_called_once_with(None__exact=(0, 0))
def test_filtering_lower_field_higher_than_upper_field(self): qs = mock.Mock(spec=['filter']) value = mock.Mock(start=35, stop=30) f = NumericRangeFilter() result = f.filter(qs, value) self.assertEqual(qs, result)
def test_field_with_lookup_type(self): qs = mock.Mock() value = mock.Mock(start=20, stop=30) f = NumericRangeFilter(lookup_type=('overlap')) f.filter(qs, value) qs.filter.assert_called_once_with(None__overlap=(20, 30))
def test_filtering_skipped_with_none_value(self): qs = mock.Mock(spec=['filter']) f = NumericRangeFilter() result = f.filter(qs, None) self.assertEqual(qs, result)
def test_filtering_exclude(self): qs = mock.Mock(spec=['exclude']) value = mock.Mock(start=20, stop=30) f = NumericRangeFilter(exclude=True) f.filter(qs, value) qs.exclude.assert_called_once_with(None__exact=(20, 30))
def test_filtering(self): qs = mock.Mock(spec=['filter']) value = mock.Mock(start=20, stop=30) f = NumericRangeFilter() f.filter(qs, value) qs.filter.assert_called_once_with(None__exact=(20, 30))
def test_default_field(self): f = NumericRangeFilter() field = f.field self.assertIsInstance(field, RangeField)
def test_filtering_startswith(self): qs = mock.Mock(spec=['filter']) value = mock.Mock(start=20, stop=None) f = NumericRangeFilter() f.filter(qs, value) qs.filter.assert_called_once_with(None__startswith=20)