10348 fix tests

This commit is contained in:
Arthur 2022-09-28 15:57:13 -07:00
parent 2c81fc2c56
commit ad6d4f892d
3 changed files with 16 additions and 6 deletions

View File

@ -1161,7 +1161,7 @@ class CustomFieldModelFilterTest(TestCase):
'cf9': ['A', 'X'], 'cf9': ['A', 'X'],
'cf10': manufacturers[0].pk, 'cf10': manufacturers[0].pk,
'cf11': [manufacturers[0].pk, manufacturers[3].pk], 'cf11': [manufacturers[0].pk, manufacturers[3].pk],
'cf12': 100.25, 'cf12': decimal.Decimal(100.25),
}), }),
Site(name='Site 2', slug='site-2', custom_field_data={ Site(name='Site 2', slug='site-2', custom_field_data={
'cf1': 200, 'cf1': 200,
@ -1175,7 +1175,7 @@ class CustomFieldModelFilterTest(TestCase):
'cf9': ['B', 'X'], 'cf9': ['B', 'X'],
'cf10': manufacturers[1].pk, 'cf10': manufacturers[1].pk,
'cf11': [manufacturers[1].pk, manufacturers[3].pk], 'cf11': [manufacturers[1].pk, manufacturers[3].pk],
'cf12': 200.25, 'cf12': decimal.Decimal(200.25),
}), }),
Site(name='Site 3', slug='site-3', custom_field_data={ Site(name='Site 3', slug='site-3', custom_field_data={
'cf1': 300, 'cf1': 300,
@ -1189,7 +1189,7 @@ class CustomFieldModelFilterTest(TestCase):
'cf9': ['C', 'X'], 'cf9': ['C', 'X'],
'cf10': manufacturers[2].pk, 'cf10': manufacturers[2].pk,
'cf11': [manufacturers[2].pk, manufacturers[3].pk], 'cf11': [manufacturers[2].pk, manufacturers[3].pk],
'cf12': 300.25, 'cf12': decimal.Decimal("300.25"),
}), }),
]) ])
@ -1202,8 +1202,9 @@ class CustomFieldModelFilterTest(TestCase):
self.assertEqual(self.filterset({'cf_cf1__lte': [200]}, self.queryset).qs.count(), 2) self.assertEqual(self.filterset({'cf_cf1__lte': [200]}, self.queryset).qs.count(), 2)
def test_filter_decimal(self): def test_filter_decimal(self):
self.assertEqual(self.filterset({'cf_cf12': [100.25, 200.25]}, self.queryset).qs.count(), 3) self.assertEqual(self.filterset({'cf_cf12__gt': [200.25]}, self.queryset).qs.count(), 1)
self.assertEqual(self.filterset({'cf_cf12__n': [200.25]}, self.queryset).qs.count(), 3) self.assertEqual(self.filterset({'cf_cf12': [100.25, 200.25]}, self.queryset).qs.count(), 2)
self.assertEqual(self.filterset({'cf_cf12__n': [200.25]}, self.queryset).qs.count(), 2)
self.assertEqual(self.filterset({'cf_cf12__gt': [200.25]}, self.queryset).qs.count(), 1) self.assertEqual(self.filterset({'cf_cf12__gt': [200.25]}, self.queryset).qs.count(), 1)
self.assertEqual(self.filterset({'cf_cf12__gte': [200.25]}, self.queryset).qs.count(), 2) self.assertEqual(self.filterset({'cf_cf12__gte': [200.25]}, self.queryset).qs.count(), 2)
self.assertEqual(self.filterset({'cf_cf12__lt': [200.25]}, self.queryset).qs.count(), 1) self.assertEqual(self.filterset({'cf_cf12__lt': [200.25]}, self.queryset).qs.count(), 1)

View File

@ -46,7 +46,7 @@ class BaseFilterSet(django_filters.FilterSet):
'filter_class': filters.MultiValueDateTimeFilter 'filter_class': filters.MultiValueDateTimeFilter
}, },
models.DecimalField: { models.DecimalField: {
'filter_class': filters.MultiValueNumberFilter 'filter_class': filters.MultiValueDecimalFilter
}, },
models.EmailField: { models.EmailField: {
'filter_class': filters.MultiValueCharFilter 'filter_class': filters.MultiValueCharFilter
@ -95,6 +95,7 @@ class BaseFilterSet(django_filters.FilterSet):
filters.MultiValueDateFilter, filters.MultiValueDateFilter,
filters.MultiValueDateTimeFilter, filters.MultiValueDateTimeFilter,
filters.MultiValueNumberFilter, filters.MultiValueNumberFilter,
filters.MultiValueDecimalFilter,
filters.MultiValueTimeFilter filters.MultiValueTimeFilter
)): )):
return FILTER_NUMERIC_BASED_LOOKUP_MAP return FILTER_NUMERIC_BASED_LOOKUP_MAP

View File

@ -23,6 +23,14 @@ def multivalue_field_factory(field_class):
field.to_python(v) for v in value if v field.to_python(v) for v in value if v
] ]
def run_validators(self, value):
for v in value:
super().run_validators(v)
def validate(self, value):
for v in value:
super().validate(v)
return type(f'MultiValue{field_class.__name__}', (NewField,), dict()) return type(f'MultiValue{field_class.__name__}', (NewField,), dict())