def test_recent_plays(): mixer.cycle(30).blend(ScrobbleDb) orm.flush() scrobbles = list(scrobble_logic.recent_plays()) assert len(scrobbles) == 30 for idx, scrobble in enumerate(scrobbles): if idx > 0: assert scrobbles[idx].date < scrobbles[idx - 1].date
def test_recent_plays_min_max_date(): song = mixer.blend(SongDb) mixer.cycle(5).blend(ScrobbleDb, date=datetime.now(), song=song) mixer.cycle(5).blend(ScrobbleDb, date=datetime.now() - timedelta(days=6), song=song) orm.flush() scrobbles = scrobble_logic.recent_plays(min_date=datetime.now() - timedelta(days=4)) assert len(scrobbles) == 5
def test_top_plays_multiple_users(): song1 = mixer.blend(SongDb) song2 = mixer.blend(SongDb) mixer.cycle(5).blend(ScrobbleDb, song=song1) mixer.cycle(3).blend(ScrobbleDb, song=song2) orm.flush() songs = scrobble_logic.most_played_songs() assert songs[0]["song"] == song1 assert songs[0]["plays"] == 5 assert songs[1]["song"] == song2 assert songs[1]["plays"] == 3
def test_top_plays_min_max_date(): song = mixer.blend(SongDb) mixer.cycle(5).blend(ScrobbleDb, date=datetime.now(), song=song) songs = mixer.cycle(5).blend(ScrobbleDb, date=datetime.now() - timedelta(days=6), song=song) orm.flush() songs = scrobble_logic.most_played_songs() assert len(songs) == 1 assert songs[0]["plays"] == 10 songs = scrobble_logic.most_played_songs(min_date=datetime.now() - timedelta(days=1)) orm.commit() assert len(songs) == 1 assert songs[0]["plays"] == 5
def test_get_song_multiple_artists(): db_song = mixer.blend(SongDb, artists=mixer.cycle(2).blend(ArtistDb)) artists = [a.name for a in db_song.artists] song = song_logic.get(title=db_song.title, artists=artists) assert song is not None assert song.title == db_song.title assert len(song.artists) == 2
def test_song_exists_existing(): db_song = mixer.blend(SongDb, artists=mixer.cycle(2).blend(ArtistDb)) artists = [a.name for a in db_song.artists] exists = song_logic.exists(title=db_song.title, artists=artists) assert exists
def test_get_song_multiple_artists_get_with_one(): db_song = mixer.blend(SongDb, artists=mixer.cycle(2).blend(ArtistDb)) artists = [a.name for a in db_song.artists] song = song_logic.get(title=db_song.title, artists=[artists[0]]) assert song is None