def test_create_messages_recordings(self): """ Test to check if the number of recordings are clipped to top 1000 """ recordings = [] for i in range(0, 2000): recordings.append({ 'artist_name': 'artist_{}'.format(i), 'artist_mbids': [str(i)], 'release_name': 'release_{}'.format(i), 'release_mbid': str(i), 'track_name': 'recording_{}'.format(i), 'recording_mbid': str(i), 'listen_count': i }) mock_result = MagicMock() mock_result.asDict.return_value = { 'user_name': "test", 'recordings': recordings } messages = entity.create_messages([mock_result], 'recordings', 'all_time', datetime.now(), datetime.now()) message = next(messages) received_list = message['data'] expected_list = recordings[:1000] self.assertCountEqual(received_list, expected_list) received_count = message['count'] expected_count = 2000 self.assertEqual(received_count, expected_count)
def test_skip_incorrect_artists_stats(self): """ Test to check if entries with incorrect data is skipped for top user artists """ with open(self.path_to_data_file('user_top_artists_incorrect.json')) as f: data = json.load(f) mock_result = MagicMock() mock_result.asDict.return_value = { 'user_name': "test", 'artists': data } messages = entity.create_messages([mock_result], 'artists', 'all_time', datetime.now(), datetime.now()) received_list = next(messages)['data'] # Only the first entry in file is valid, all others must be skipped self.assertListEqual(data[:1], received_list)