@@ -338,21 +338,35 @@ def test_get_subset(self):
338338 filter_subset = UserFilter .get_filter_subset (['email' ])
339339
340340 # ensure that the FilterSet subset only contains the requested fields
341- self .assertIn ('email' , filter_subset )
342- self .assertEqual (len (filter_subset ), 1 )
341+ self .assertEqual (list (filter_subset ), ['email' ])
343342
344343 def test_related_subset (self ):
345344 # related filters should only return the local RelatedFilter
346345 filter_subset = NoteFilter .get_filter_subset (['title' , 'author' , 'author__email' ])
347346
348- self .assertIn ('title' , filter_subset )
349- self .assertIn ('author' , filter_subset )
350- self .assertEqual (len (filter_subset ), 2 )
347+ self .assertEqual (list (filter_subset ), ['title' , 'author' ])
351348
352349 def test_non_filter_subset (self ):
353350 # non-filter params should be ignored
354351 filter_subset = NoteFilter .get_filter_subset (['foobar' ])
355- self .assertEqual (len (filter_subset ), 0 )
352+ self .assertEqual (list (filter_subset ), [])
353+
354+ def test_subset_ordering (self ):
355+ # sanity check ordering of base filters
356+ filter_subset = [f for f in NoteFilter .base_filters if f in ['title' , 'author' ]]
357+ self .assertEqual (list (filter_subset ), ['title' , 'author' ])
358+
359+ # ensure that the ordering of the subset is the same as the base filters
360+ filter_subset = NoteFilter .get_filter_subset (['title' , 'author' ])
361+ self .assertEqual (list (filter_subset ), ['title' , 'author' ])
362+
363+ # ensure reverse argument order does not change subset ordering
364+ filter_subset = NoteFilter .get_filter_subset (['author' , 'title' ])
365+ self .assertEqual (list (filter_subset ), ['title' , 'author' ])
366+
367+ # ensure related filters do not change subset ordering
368+ filter_subset = NoteFilter .get_filter_subset (['author__email' , 'author' , 'title' ])
369+ self .assertEqual (list (filter_subset ), ['title' , 'author' ])
356370
357371 def test_metaclass_inheritance (self ):
358372 # See: https://github.com/philipn/django-rest-framework-filters/issues/132
@@ -372,9 +386,7 @@ class Meta:
372386 filter_subset = NoteFilter .get_filter_subset (['author' , 'content' ])
373387
374388 # ensure that the FilterSet subset only contains the requested fields
375- self .assertIn ('author' , filter_subset )
376- self .assertIn ('content' , filter_subset )
377- self .assertEqual (len (filter_subset ), 2 )
389+ self .assertEqual (list (filter_subset ), ['content' , 'author' ])
378390
379391
380392class DisableSubsetTests (TestCase ):
0 commit comments