2222
2323import tidalapi
2424from tidalapi .exceptions import ObjectNotFound
25+ from tidalapi .types import (
26+ ArtistOrder ,
27+ PlaylistOrder ,
28+ AlbumOrder ,
29+ MixOrder ,
30+ OrderDirection ,
31+ )
2532
2633
2734def 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
235280def 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+
243324def 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+
249366def 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+
267420def 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+
273461def test_add_remove_favorite_video (session ):
274462 favorites = session .user .favorites
275463 video_id = 160850422
0 commit comments