Skip to content

Commit 1da15de

Browse files
committed
Test: Add, remove favorite mix. Add remove artist, album, playlist, track (multiple)
1 parent 6211704 commit 1da15de

1 file changed

Lines changed: 196 additions & 8 deletions

File tree

tests/test_user.py

Lines changed: 196 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@
2222

2323
import tidalapi
2424
from tidalapi.exceptions import ObjectNotFound
25+
from tidalapi.types import (
26+
ArtistOrder,
27+
PlaylistOrder,
28+
AlbumOrder,
29+
MixOrder,
30+
OrderDirection,
31+
)
2532

2633

2734
def test_user(session):
@@ -222,14 +229,52 @@ def test_folder_moves(session):
222229
folder_b.remove()
223230

224231

225-
def test_add_remove_folder(session):
226-
folder = session.user.create_folder(title="testfolderA")
227-
folder_id = folder.id
228-
# remove folder from favourites
229-
session.user.favorites.remove_folders_playlists([folder.id])
230-
# check if folder has been removed
231-
with pytest.raises(ObjectNotFound):
232-
session.folder(folder_id)
232+
def test_add_remove_favorite_mix(session):
233+
mix_ids_single = ["0007646f7c64d03d56846ed25dae3d"]
234+
mix_ids_multiple = [
235+
"0000fc7cda952f508279ad2f66222a",
236+
"0002411cdd08aceba45671ba1f41a2",
237+
]
238+
239+
def assert_mixes_present(expected_ids: list[str], should_exist: bool):
240+
current_ids = [mix.id for mix in session.user.favorites.mixes()]
241+
for mix_id in expected_ids:
242+
if should_exist:
243+
assert mix_id in current_ids
244+
else:
245+
assert mix_id not in current_ids
246+
247+
# Add single and verify
248+
assert session.user.favorites.add_mixes(mix_ids_single)
249+
assert_mixes_present(mix_ids_single, should_exist=True)
250+
251+
# Add multiple and verify
252+
assert session.user.favorites.add_mixes(mix_ids_multiple)
253+
assert_mixes_present(mix_ids_multiple, should_exist=True)
254+
255+
# Remove single and verify
256+
assert session.user.favorites.remove_mixes(mix_ids_single)
257+
assert_mixes_present(mix_ids_single, should_exist=False)
258+
259+
# Remove multiple and verify
260+
assert session.user.favorites.remove_mixes(mix_ids_multiple)
261+
assert_mixes_present(mix_ids_multiple, should_exist=False)
262+
263+
264+
def test_add_remove_favorite_mix_validate(session):
265+
# Add the same mix twice (Second time will fail, if validate is enabled)
266+
# Add a single artist mix
267+
assert session.user.favorites.add_mixes("0000343aa1769e75f54f900febba7e")
268+
# Add it again. No validate: Success. Validate: Failure
269+
assert session.user.favorites.add_mixes("0000343aa1769e75f54f900febba7e")
270+
assert not session.user.favorites.add_mixes(
271+
"0000343aa1769e75f54f900febba7e", validate=True
272+
)
273+
# Cleanup after tests & validate
274+
assert session.user.favorites.remove_mixes("0000343aa1769e75f54f900febba7e")
275+
assert not session.user.favorites.remove_mixes(
276+
"0000343aa1769e75f54f900febba7e", validate=True
277+
)
233278

234279

235280
def test_add_remove_favorite_artist(session):
@@ -240,12 +285,84 @@ def test_add_remove_favorite_artist(session):
240285
)
241286

242287

288+
def test_add_remove_favorite_artist_multiple(session):
289+
artist_single = ["1566"]
290+
artists_multiple = [
291+
"33236",
292+
"30395",
293+
"24996",
294+
"16928",
295+
"1728",
296+
]
297+
298+
def assert_artists_present(expected_ids: list[str], should_exist: bool):
299+
current_ids = [str(artist.id) for artist in session.user.favorites.artists()]
300+
for artist_id in expected_ids:
301+
if should_exist:
302+
assert artist_id in current_ids
303+
else:
304+
assert artist_id not in current_ids
305+
306+
# Add single and verify
307+
assert session.user.favorites.add_artist(artist_single)
308+
assert_artists_present(artist_single, should_exist=True)
309+
310+
# Add multiple and verify
311+
assert session.user.favorites.add_artist(artists_multiple)
312+
assert_artists_present(artists_multiple, should_exist=True)
313+
314+
# Remove single and verify
315+
assert session.user.favorites.remove_artist(artist_single[0])
316+
assert_artists_present(artist_single, should_exist=False)
317+
318+
# Remove multiple (one by one) and verify
319+
for artist_id in artists_multiple:
320+
assert session.user.favorites.remove_artist(artist_id)
321+
assert_artists_present(artists_multiple, should_exist=False)
322+
323+
243324
def test_add_remove_favorite_album(session):
244325
favorites = session.user.favorites
245326
album_id = 32961852
246327
add_remove(album_id, favorites.add_album, favorites.remove_album, favorites.albums)
247328

248329

330+
def test_add_remove_favorite_album_multiple(session):
331+
album_single = ["32961852"]
332+
albums_multiple = [
333+
"446470480",
334+
"436252631",
335+
"426730499",
336+
"437654760",
337+
"206012740",
338+
]
339+
340+
def assert_albums_present(expected_ids: list[str], should_exist: bool):
341+
current_ids = [str(album.id) for album in session.user.favorites.albums()]
342+
for album_id in expected_ids:
343+
if should_exist:
344+
assert album_id in current_ids
345+
else:
346+
assert album_id not in current_ids
347+
348+
# Add single and verify
349+
assert session.user.favorites.add_album(album_single)
350+
assert_albums_present(album_single, should_exist=True)
351+
352+
# Add multiple and verify
353+
assert session.user.favorites.add_album(albums_multiple)
354+
assert_albums_present(albums_multiple, should_exist=True)
355+
356+
# Remove single and verify
357+
assert session.user.favorites.remove_album(album_single[0])
358+
assert_albums_present(album_single, should_exist=False)
359+
360+
# Remove multiple and verify
361+
for album in albums_multiple:
362+
assert session.user.favorites.remove_album(album)
363+
assert_albums_present(albums_multiple, should_exist=False)
364+
365+
249366
def test_add_remove_favorite_playlist(session):
250367
favorites = session.user.favorites
251368
playlists_and_favorite_playlists = session.user.playlist_and_favorite_playlists
@@ -264,12 +381,83 @@ def test_add_remove_favorite_playlist(session):
264381
)
265382

266383

384+
def test_add_remove_favorite_playlists(session):
385+
playlist_single = ["94fe2b9b-096d-4b39-8129-d5b8e774e9b3"]
386+
playlists_multiple = [
387+
"285d6293-8f77-4dc1-8dab-a262f3d0cb43",
388+
"6bd2a3a8-a84e-4540-9077-f99858c230d5",
389+
"e89f8af0-cf8c-4f5d-81fc-7b5955c558f1",
390+
"13aacb6d-aa07-4186-8fb1-41b6a617d1c8",
391+
"ca372375-7d98-4970-a7b0-04db88b68c6d",
392+
]
393+
394+
def assert_playlists_present(expected_ids: list[str], should_exist: bool):
395+
current_ids = [pl.id for pl in session.user.favorites.playlists()]
396+
for pl_id in expected_ids:
397+
if should_exist:
398+
assert pl_id in current_ids
399+
else:
400+
assert pl_id not in current_ids
401+
402+
# Add single and verify
403+
assert session.user.favorites.add_playlist(playlist_single)
404+
assert_playlists_present(playlist_single, should_exist=True)
405+
406+
# Add multiple and verify
407+
assert session.user.favorites.add_playlist(playlists_multiple)
408+
assert_playlists_present(playlists_multiple, should_exist=True)
409+
410+
# Remove single and verify
411+
assert session.user.favorites.remove_playlist(playlist_single[0])
412+
assert_playlists_present(playlist_single, should_exist=False)
413+
414+
# Remove multiple and verify
415+
for playlist in playlists_multiple:
416+
assert session.user.favorites.remove_playlist(playlist)
417+
assert_playlists_present(playlists_multiple, should_exist=False)
418+
419+
267420
def test_add_remove_favorite_track(session):
268421
favorites = session.user.favorites
269422
track_id = 32961853
270423
add_remove(track_id, favorites.add_track, favorites.remove_track, favorites.tracks)
271424

272425

426+
def test_add_remove_favorite_track_multiple(session):
427+
track_single = ["444306564"]
428+
tracks_multiple = [
429+
"439159646",
430+
"445292352",
431+
"444053782",
432+
"426730500",
433+
]
434+
435+
def assert_tracks_present(expected_ids: list[str], should_exist: bool):
436+
current_ids = [str(track.id) for track in session.user.favorites.tracks()]
437+
for track_id in expected_ids:
438+
if should_exist:
439+
assert track_id in current_ids
440+
else:
441+
assert track_id not in current_ids
442+
443+
# Add single and verify
444+
assert session.user.favorites.add_track(track_single)
445+
assert_tracks_present(track_single, should_exist=True)
446+
447+
# Add multiple and verify
448+
assert session.user.favorites.add_track(tracks_multiple)
449+
assert_tracks_present(tracks_multiple, should_exist=True)
450+
451+
# Remove single and verify
452+
assert session.user.favorites.remove_track(track_single[0])
453+
assert_tracks_present(track_single, should_exist=False)
454+
455+
# Remove multiple (one by one) and verify
456+
for track_id in tracks_multiple:
457+
assert session.user.favorites.remove_track(track_id)
458+
assert_tracks_present(tracks_multiple, should_exist=False)
459+
460+
273461
def test_add_remove_favorite_video(session):
274462
favorites = session.user.favorites
275463
video_id = 160850422

0 commit comments

Comments
 (0)