def test_numericrange_filter_apply_filter(self): qs = Book.objects.all() # exclusive params1 = MultiValueDict({'price': ['3.50..4.00']}) filter1 = NumericRangeFilter('price', Book, params1) qs_filtered1 = filter1.apply_filter(qs) self.assertEqual(list(qs_filtered1), list(qs.filter(price__gt=Decimal('3.50'), price__lt=Decimal('4.00')))) # inclusive params2 = MultiValueDict({'price': ['3.50i..4.00i']}) filter2 = NumericRangeFilter('price', Book, params2) qs_filtered2 = filter2.apply_filter(qs) self.assertEqual(list(qs_filtered2), list(qs.filter(price__gte=Decimal('3.50'), price__lte=Decimal('4.00'))))
def test_numericrange_filter_drilldown(self): # Can specify to turn off drilldown # We shouldn't get drilldown if ranges is specified manually. params1 = MultiValueDict({'price': ['3.50i..5.00i']}) filter1 = NumericRangeFilter('price', Book, params1, drilldown=False) qs = Book.objects.all() qs_filtered1 = filter1.apply_filter(qs) choices = filter1.get_choices(qs_filtered1) self.assertEqual(len(choices), 1) self.assertEqual(choices[0].link_type, FILTER_REMOVE)
def test_numericrange_filter_drilldown(self): # Can specify to turn off drilldown # We shouldn't get drilldown if ranges is specified manually. params1 = MultiValueDict({'price': ['3.50i..5.00i']}) filter1 = NumericRangeFilter('price', Book, params1, drilldown=False) qs = Book.objects.all() qs_filtered1 = filter1.apply_filter(qs) choices = filter1.get_choices(qs_filtered1) self.assertEqual(len(choices), 1) self.assertEqual(choices[0].link_type, FILTER_REMOVE)
def test_numericrange_filter_apply_filter(self): qs = Book.objects.all() # exclusive params1 = MultiValueDict({'price': ['3.50..4.00']}) filter1 = NumericRangeFilter('price', Book, params1) qs_filtered1 = filter1.apply_filter(qs) self.assertEqual( list(qs_filtered1), list( qs.filter(price__gt=Decimal('3.50'), price__lt=Decimal('4.00')))) # inclusive params2 = MultiValueDict({'price': ['3.50i..4.00i']}) filter2 = NumericRangeFilter('price', Book, params2) qs_filtered2 = filter2.apply_filter(qs) self.assertEqual( list(qs_filtered2), list( qs.filter(price__gte=Decimal('3.50'), price__lte=Decimal('4.00'))))