from datetime import datetime, timedelta from tracker import json_utils, db from . import login_to_test_client as _login def test_youtube(session): session.add(db.YtChannel( ytid='channel1', name='1 Channel', )) session.add(db.YtChannel( ytid='channel2', name='2 Channel', )) session.add(db.YtVideo( ytid='video1', title='Video 1', published=datetime.today() - timedelta(days=12), )) session.add(db.YtVideo( ytid='video2', title='Video 2', published=datetime.today() - timedelta(days=12), )) session.add(db.YtVideo( ytid='video3', title='Video 3', published=datetime.today() - timedelta(days=12), )) session.add(db.YtChannelVideo( video_ytid='video1', channel_ytid='channel1', )) # not sure this can actually exits, as it seems tracks are in a single channel (many to one not many to many) # but doesnt hurt to support it / test it session.add(db.YtChannelVideo( video_ytid='video1', channel_ytid='channel2', )) session.add(db.YtChannelVideo( video_ytid='video2', channel_ytid='channel1', )) session.add(db.YtChannelVideo( video_ytid='video3', channel_ytid='channel2', )) # Only subscribe to channel 1 session.add(db.UsersYtChannels( username='joel', ytid='channel1', )) for i in range(10): for v in range(1, 4): session.add(db.YtVideoStatistics( video_ytid='video' + str(i), as_of=datetime.today() - timedelta(days=i), comment_count=i, dislike_count=i, favorite_count=i, like_count=i, view_count=i, )) session.commit() from api import api app = api.app.test_client() _login(app) rv = app.get('/api/youtube') data = json_utils.loads(rv.data) print(json_utils.dumps(data, indent=2)) assert len(data['videos']) == 2 # # returned_artist_names = set([i[1]['name'] for i in data['artists'].items()]) # assert returned_artist_names == set(["Liked Artist", "Followed Artist"])