funkwhale/api/tests/radios/test_filters.py

38 wiersze
1.4 KiB
Python

from funkwhale_api.radios import filters
def test_clean_config_artist_name_sorting(factories):
artist3 = factories["music.Artist"](name="The Green Eyes")
artist2 = factories["music.Artist"](name="The Green Eyed Machine")
artist1 = factories["music.Artist"](name="The Green Seed")
factories["music.Artist"]()
filter_config = {"type": "artist", "ids": [artist3.pk, artist1.pk, artist2.pk]}
artist_filter = filters.ArtistFilter()
config = artist_filter.clean_config(filter_config)
# list of names whose artists have been sorted by name then by id
sorted_names = [
a.name
for a in list(
sorted([artist2, artist1, artist3], key=lambda x: (len(x.name), x.id))
)
]
assert config["names"] == sorted_names
def test_clean_config_tag_name_sorting(factories):
tag3 = factories["tags.Tag"](name="Rock")
tag2 = factories["tags.Tag"](name="Classic")
tag1 = factories["tags.Tag"](name="Punk")
factories["tags.Tag"]()
filter_config = {"type": "tag", "names": [tag3.name, tag1.name, tag2.name]}
tag_filter = filters.TagFilter()
config = tag_filter.clean_config(filter_config)
# list of names whose tags have been sorted by name then by id
sorted_names = [
a.name
for a in list(sorted([tag2, tag1, tag3], key=lambda x: (len(x.name), x.id)))
]
assert config["names"] == sorted_names