import json import os from datetime import datetime import pytest from dapd_api_scraper.etl_models import ( AppleMusicAlbum, AppleMusicArtist, AppleMusicPlaylist, AppleMusicTrack, SpotifyAlbum, SpotifyArtist, SpotifyPlaylist, SpotifyTrack, ) @pytest.mark.parametrize( "model,path,dsp_id", [ [AppleMusicAlbum, "apple_music/album", 1], [AppleMusicArtist, "apple_music/artist", 1], [AppleMusicPlaylist, "apple_music/playlist", 1], [AppleMusicTrack, "apple_music/track", 1], [SpotifyAlbum, "spotify/album", 2], [SpotifyArtist, "spotify/artist", 2], [SpotifyPlaylist, "spotify/playlist", 2], [SpotifyTrack, "spotify/track", 2], ], ) def test_etl_model_init(model, path, dsp_id): try: for filename in os.listdir("tests/raw/" + path): with open(f"tests/raw/{path}/{filename}", encoding="utf-8") as entity_file: model( **json.loads(entity_file.read()), dsp_id=dsp_id, market_id=1, updated_at=datetime.now(), save_tracklist=True, save_tracklist_history=True, is_personalized=False, ) except Exception as exc: assert False, f"{model} raised exception\n{exc}"