import os from datetime import datetime, timedelta from tracker import json_utils, db def test_spotify(session): session.add(db.SpyPlaylist( spyid='playlist1', user='playlist1_owner', name='1 Playlist', )) session.add(db.SpyPlaylist( spyid='playlist2', user='playlist2_owner', name='2 Playlist', )) session.add(db.SpyArtist( spyid='artist1', name='Artist 1', )) session.add(db.SpyArtist( spyid='artist2', name='Artist 2', )) session.add(db.SpyTrack( spyid='track1', name='Track 1', primary_artist_spyid='artist1', data={ } )) session.add(db.SpyTrack( spyid='track2', name='Track 2', primary_artist_spyid='artist2', )) session.add(db.SpyPlaylistTrack( playlist_spyid='playlist1', track_spyid='track1', added_at=datetime.today(), first_seen=datetime.today(), last_seen=datetime.today(), first_position=1, last_position=1, )) session.add(db.SpyPlaylistTrack( playlist_spyid='playlist2', track_spyid='track1', added_at=datetime.today(), first_seen=datetime.today(), last_seen=datetime.today(), first_position=1, last_position=1, )) session.add(db.SpyPlaylistTrack( playlist_spyid='playlist2', track_spyid='track2', added_at=datetime.today(), first_seen=datetime.today(), last_seen=datetime.today(), first_position=1, last_position=1, )) session.add(db.UsersSpyPlaylists( username='joel', spyid='playlist1', )) for i in range(10): session.add(db.SpyTrackPopularity( track_spyid='track1', as_of=datetime.today() - timedelta(days=i), value=10+i, )) session.add(db.SpyTrackPopularity( track_spyid='track2', as_of=datetime.today() - timedelta(days=i), value=10+i, )) session.commit() session.execute("refresh materialized view all_popularity") session.commit() from api import api app = api.app.test_client() _login(app) rv = app.get('/api/spotify') data = json_utils.loads(rv.data) print(json_utils.dumps(data, indent=2)) assert len(data['tracks']) == 1 assert len(data['playlists']) == 1 assert data['playlists'][0]['spyid'] == 'playlist1' assert data['playlists'][0]['name'] == '1 Playlist' assert data['playlists'][0]['active'] is True assert data['tracks'][0]['spyid'] == 'track1' # # returned_artist_names = set([i[1]['name'] for i in data['artists'].items()]) # assert returned_artist_names == set(["Liked Artist", "Followed Artist"]) # Helpers def _login(app, username='joel', password='Joel123'): rl = app.post('/api/login', data=json_utils.dumps([username, password]), content_type='application/json', follow_redirects=True) assert rl.status_code == 200, ("Failed to login with ", username, password)