Skip to content

Instantly share code, notes, and snippets.

@vansika
Created July 9, 2019 08:37
Show Gist options
  • Save vansika/724325e8d0ef094ce9d3abb907893039 to your computer and use it in GitHub Desktop.
Save vansika/724325e8d0ef094ce9d3abb907893039 to your computer and use it in GitHub Desktop.
def test_get_listens(self):
""" Test to make sure that the api sends valid listens on get requests.
"""
with open(self.path_to_data_file('valid_single.json'), 'r') as f:
payload = json.load(f)
# send a listen
ts = int(time.time())
payload['payload'][0]['listened_at'] = ts
response = self.send_data(payload)
self.assert200(response)
self.assertEqual(response.json['status'], 'ok')
# This sleep allows for the influx subscriber to take its time in getting
# the listen submitted from redis and writing it to influx.
# Removing it causes an empty list of listens to be returned.
time.sleep(2)
url = url_for('api_v1.get_listens', user_name = self.user['musicbrainz_id'])
response = self.client.get(url, query_string = {'count': '1'})
self.assert200(response)
data = json.loads(response.data)['payload']
# make sure user id is correct
self.assertEqual(data['user_id'], self.user['musicbrainz_id'])
# make sure that count is 1 and list also contains 1 listen
self.assertEqual(data['count'], 1)
self.assertEqual(len(data['listens']), 1)
# make sure timestamp is the same as sent
sent_time = payload['payload'][0]['listened_at']
self.assertEqual(data['listens'][0]['listened_at'], sent_time)
self.assertEqual(data['listens'][0]['track_metadata']['track_name'], 'Fade')
self.assertEqual(data['listens'][0]['track_metadata']['artist_name'], 'Kanye West')
self.assertEqual(data['listens'][0]['track_metadata']['release_name'], 'The Life of Pablo')
# make sure that artist msid, release msid and recording msid are present in data
self.assertTrue(is_valid_uuid(data['listens'][0]['recording_msid']))
self.assertTrue(is_valid_uuid(data['listens'][0]['track_metadata']['additional_info']['artist_msid']))
self.assertTrue(is_valid_uuid(data['listens'][0]['track_metadata']['additional_info']['release_msid']))
# check for latest listen timestamp
self.assertEqual(data['latest_listen_ts'], ts)
# request with min_ts should work
response = self.client.get(url, query_string = {'min_ts': int(time.time())})
self.assert200(response)
# request with max_ts lesser than the timestamp of the submitted listen
# should not send back any listens, should report a good latest_listen timestamp
response = self.client.get(url, query_string = {'max_ts': ts - 2})
self.assert200(response)
> self.assertListEqual(response.json['payload']['listens'], [])
E AssertionError: Lists differ: [{'listened_at': 1562659711, 'recording_ms[1167 chars]re'}] != []
E
E First list contains 1 additional elements.
E First extra element 0:
E {'listened_at': 1562659711, 'recording_msid': 'a139b211-a476-4614-9565-3ecfc95bcb0f', 'track_metadata': {'additional_info': {'artist_mbids': ['abaa7001-0d80-4e58-be5d-d2d246fd9d87', '7babc9be-ca2b-4544-b932-7c9ab38770d6'], 'artist_msid': '2c7c4b54-c2d2-404d-b458-b7d5920c3869', 'best_song': 'definitely', 'isrc': 'isrc', 'link1': 'https://genius.com/Majid-jordan-every-step-every-way-lyrics', 'link2': 'https://www.last.fm/music/Majid+Jordan/_/Every+Step+Every+Way', 'nested.info': 'here', 'non_official_list': ['hi', 'hello'], 'other_stuff': 'teststuffplsignore', 'recording_mbid': None, 'recording_msid': 'a139b211-a476-4614-9565-3ecfc95bcb0f', 'release_group_mbid': 'c2f7be65-056f-4589-ba84-3ad8cb674628', 'release_mbid': None, 'release_msid': '3a4826d1-2114-4d36-96ae-f697c4203bd2', 'release_type': ['ALBUM', 'REMIX'], 'spotify_id': 'http://open.spotify.com/track/1rrgWMXGCGHru5bIRxGFV0', 'tags': [], 'track_mbid': '3ad754b9-1af2-4743-8ee5-d91ba4c82f0f', 'tracknumber': 7, 'work_mbids': ['ac4f356f-23e5-40ab-990e-da7e34b65d6e', 'ac3a827c-ad58-4624-9aa4-ecfffc56d8fe']}, 'artist_name': 'Majid Jordan', 'release_name': 'Majid Jordan', 'track_name': 'Every Step Every Way'}, 'user_name': 'testuserpleaseignore'}
E
E Diff is 2238 characters long. Set self.maxDiff to None to see it.
listenbrainz/tests/integration/test_api.py:77: AssertionError
-------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment