Shorten test names
This commit is contained in:
parent
6fd84421bd
commit
36f7e9619b
9 changed files with 0 additions and 0 deletions
357
tests/test_network.py
Executable file
357
tests/test_network.py
Executable file
|
@ -0,0 +1,357 @@
|
|||
#!/usr/bin/env python
|
||||
"""
|
||||
Integration (not unit) tests for pylast.py
|
||||
"""
|
||||
import time
|
||||
import unittest
|
||||
|
||||
import pylast
|
||||
|
||||
from .test_pylast import PyLastTestCase
|
||||
|
||||
|
||||
class TestPyLastNetwork(PyLastTestCase):
|
||||
|
||||
def test_scrobble(self):
|
||||
# Arrange
|
||||
artist = "test artist"
|
||||
title = "test title"
|
||||
timestamp = self.unix_timestamp()
|
||||
lastfm_user = self.network.get_user(self.username)
|
||||
|
||||
# Act
|
||||
self.network.scrobble(artist=artist, title=title, timestamp=timestamp)
|
||||
|
||||
# Assert
|
||||
# limit=2 to ignore now-playing:
|
||||
last_scrobble = lastfm_user.get_recent_tracks(limit=2)[0]
|
||||
self.assertEqual(str(last_scrobble.track.artist).lower(), artist)
|
||||
self.assertEqual(str(last_scrobble.track.title).lower(), title)
|
||||
self.assertEqual(str(last_scrobble.timestamp), str(timestamp))
|
||||
|
||||
def test_update_now_playing(self):
|
||||
# Arrange
|
||||
artist = "Test Artist"
|
||||
title = "test title"
|
||||
album = "Test Album"
|
||||
track_number = 1
|
||||
lastfm_user = self.network.get_user(self.username)
|
||||
|
||||
# Act
|
||||
self.network.update_now_playing(
|
||||
artist=artist, title=title, album=album, track_number=track_number)
|
||||
|
||||
# Assert
|
||||
current_track = lastfm_user.get_now_playing()
|
||||
self.assertIsNotNone(current_track)
|
||||
self.assertEqual(str(current_track.title).lower(), "test title")
|
||||
self.assertEqual(str(current_track.artist).lower(), "test artist")
|
||||
|
||||
def test_enable_rate_limiting(self):
|
||||
# Arrange
|
||||
self.assertFalse(self.network.is_rate_limited())
|
||||
|
||||
# Act
|
||||
self.network.enable_rate_limit()
|
||||
then = time.time()
|
||||
# Make some network call, limit not applied first time
|
||||
self.network.get_user(self.username)
|
||||
# Make a second network call, limiting should be applied
|
||||
self.network.get_top_artists()
|
||||
now = time.time()
|
||||
|
||||
# Assert
|
||||
self.assertTrue(self.network.is_rate_limited())
|
||||
self.assertGreaterEqual(now - then, 0.2)
|
||||
|
||||
def test_disable_rate_limiting(self):
|
||||
# Arrange
|
||||
self.network.enable_rate_limit()
|
||||
self.assertTrue(self.network.is_rate_limited())
|
||||
|
||||
# Act
|
||||
self.network.disable_rate_limit()
|
||||
# Make some network call, limit not applied first time
|
||||
self.network.get_user(self.username)
|
||||
# Make a second network call, limiting should be applied
|
||||
self.network.get_top_artists()
|
||||
|
||||
# Assert
|
||||
self.assertFalse(self.network.is_rate_limited())
|
||||
|
||||
def test_lastfm_network_name(self):
|
||||
# Act
|
||||
name = str(self.network)
|
||||
|
||||
# Assert
|
||||
self.assertEqual(name, "Last.fm Network")
|
||||
|
||||
def test_geo_get_top_artists(self):
|
||||
# Arrange
|
||||
# Act
|
||||
artists = self.network.get_geo_top_artists(
|
||||
country="United Kingdom", limit=1)
|
||||
|
||||
# Assert
|
||||
self.assertEqual(len(artists), 1)
|
||||
self.assertIsInstance(artists[0], pylast.TopItem)
|
||||
self.assertIsInstance(artists[0].item, pylast.Artist)
|
||||
|
||||
def test_geo_get_top_tracks(self):
|
||||
# Arrange
|
||||
# Act
|
||||
tracks = self.network.get_geo_top_tracks(
|
||||
country="United Kingdom", location="Manchester", limit=1)
|
||||
|
||||
# Assert
|
||||
self.assertEqual(len(tracks), 1)
|
||||
self.assertIsInstance(tracks[0], pylast.TopItem)
|
||||
self.assertIsInstance(tracks[0].item, pylast.Track)
|
||||
|
||||
def test_network_get_top_artists_with_limit(self):
|
||||
# Arrange
|
||||
# Act
|
||||
artists = self.network.get_top_artists(limit=1)
|
||||
|
||||
# Assert
|
||||
self.helper_only_one_thing_in_top_list(artists, pylast.Artist)
|
||||
|
||||
def test_network_get_top_tags_with_limit(self):
|
||||
# Arrange
|
||||
# Act
|
||||
tags = self.network.get_top_tags(limit=1)
|
||||
|
||||
# Assert
|
||||
self.helper_only_one_thing_in_top_list(tags, pylast.Tag)
|
||||
|
||||
def test_network_get_top_tags_with_no_limit(self):
|
||||
# Arrange
|
||||
# Act
|
||||
tags = self.network.get_top_tags()
|
||||
|
||||
# Assert
|
||||
self.helper_at_least_one_thing_in_top_list(tags, pylast.Tag)
|
||||
|
||||
def test_network_get_top_tracks_with_limit(self):
|
||||
# Arrange
|
||||
# Act
|
||||
tracks = self.network.get_top_tracks(limit=1)
|
||||
|
||||
# Assert
|
||||
self.helper_only_one_thing_in_top_list(tracks, pylast.Track)
|
||||
|
||||
def test_country_top_tracks(self):
|
||||
# Arrange
|
||||
country = self.network.get_country("Croatia")
|
||||
|
||||
# Act
|
||||
things = country.get_top_tracks(limit=2)
|
||||
|
||||
# Assert
|
||||
self.helper_two_different_things_in_top_list(things, pylast.Track)
|
||||
|
||||
def test_country_network_top_tracks(self):
|
||||
# Arrange
|
||||
# Act
|
||||
things = self.network.get_geo_top_tracks("Croatia", limit=2)
|
||||
|
||||
# Assert
|
||||
self.helper_two_different_things_in_top_list(things, pylast.Track)
|
||||
|
||||
def test_tag_top_tracks(self):
|
||||
# Arrange
|
||||
tag = self.network.get_tag("blues")
|
||||
|
||||
# Act
|
||||
things = tag.get_top_tracks(limit=2)
|
||||
|
||||
# Assert
|
||||
self.helper_two_different_things_in_top_list(things, pylast.Track)
|
||||
|
||||
def test_album_data(self):
|
||||
# Arrange
|
||||
thing = self.network.get_album("Test Artist", "Test Album")
|
||||
|
||||
# Act
|
||||
stringed = str(thing)
|
||||
rep = thing.__repr__()
|
||||
title = thing.get_title()
|
||||
name = thing.get_name()
|
||||
playcount = thing.get_playcount()
|
||||
url = thing.get_url()
|
||||
|
||||
# Assert
|
||||
self.assertEqual(stringed, "Test Artist - Test Album")
|
||||
self.assertIn("pylast.Album('Test Artist', 'Test Album',", rep)
|
||||
self.assertEqual(title, name)
|
||||
self.assertIsInstance(playcount, int)
|
||||
self.assertGreater(playcount, 1)
|
||||
self.assertEqual(
|
||||
"https://www.last.fm/music/test%2bartist/test%2balbum", url)
|
||||
|
||||
def test_track_data(self):
|
||||
# Arrange
|
||||
thing = self.network.get_track("Test Artist", "test title")
|
||||
|
||||
# Act
|
||||
stringed = str(thing)
|
||||
rep = thing.__repr__()
|
||||
title = thing.get_title()
|
||||
name = thing.get_name()
|
||||
playcount = thing.get_playcount()
|
||||
url = thing.get_url(pylast.DOMAIN_FRENCH)
|
||||
|
||||
# Assert
|
||||
self.assertEqual(stringed, "Test Artist - test title")
|
||||
self.assertIn("pylast.Track('Test Artist', 'test title',", rep)
|
||||
self.assertEqual(title, "test title")
|
||||
self.assertEqual(title, name)
|
||||
self.assertIsInstance(playcount, int)
|
||||
self.assertGreater(playcount, 1)
|
||||
self.assertEqual(
|
||||
"https://www.last.fm/fr/music/test%2bartist/_/test%2btitle", url)
|
||||
|
||||
def test_country_top_artists(self):
|
||||
# Arrange
|
||||
country = self.network.get_country("Ukraine")
|
||||
|
||||
# Act
|
||||
artists = country.get_top_artists(limit=1)
|
||||
|
||||
# Assert
|
||||
self.helper_only_one_thing_in_top_list(artists, pylast.Artist)
|
||||
|
||||
def test_caching(self):
|
||||
# Arrange
|
||||
user = self.network.get_user("RJ")
|
||||
|
||||
# Act
|
||||
self.network.enable_caching()
|
||||
tags1 = user.get_top_tags(limit=1, cacheable=True)
|
||||
tags2 = user.get_top_tags(limit=1, cacheable=True)
|
||||
|
||||
# Assert
|
||||
self.assertTrue(self.network.is_caching_enabled())
|
||||
self.assertEqual(tags1, tags2)
|
||||
self.network.disable_caching()
|
||||
self.assertFalse(self.network.is_caching_enabled())
|
||||
|
||||
def test_album_mbid(self):
|
||||
# Arrange
|
||||
mbid = "a6a265bf-9f81-4055-8224-f7ac0aa6b937"
|
||||
|
||||
# Act
|
||||
album = self.network.get_album_by_mbid(mbid)
|
||||
album_mbid = album.get_mbid()
|
||||
|
||||
# Assert
|
||||
self.assertIsInstance(album, pylast.Album)
|
||||
self.assertEqual(album.title.lower(), "test")
|
||||
self.assertEqual(album_mbid, mbid)
|
||||
|
||||
def test_artist_mbid(self):
|
||||
# Arrange
|
||||
mbid = "7e84f845-ac16-41fe-9ff8-df12eb32af55"
|
||||
|
||||
# Act
|
||||
artist = self.network.get_artist_by_mbid(mbid)
|
||||
|
||||
# Assert
|
||||
self.assertIsInstance(artist, pylast.Artist)
|
||||
self.assertEqual(artist.name, "MusicBrainz Test Artist")
|
||||
|
||||
def test_track_mbid(self):
|
||||
# Arrange
|
||||
mbid = "ebc037b1-cc9c-44f2-a21f-83c219f0e1e0"
|
||||
|
||||
# Act
|
||||
track = self.network.get_track_by_mbid(mbid)
|
||||
track_mbid = track.get_mbid()
|
||||
|
||||
# Assert
|
||||
self.assertIsInstance(track, pylast.Track)
|
||||
self.assertEqual(track.title, "first")
|
||||
self.assertEqual(track_mbid, mbid)
|
||||
|
||||
def test_init_with_token(self):
|
||||
# Arrange/Act
|
||||
msg = None
|
||||
try:
|
||||
pylast.LastFMNetwork(
|
||||
api_key=self.__class__.secrets["api_key"],
|
||||
api_secret=self.__class__.secrets["api_secret"],
|
||||
token="invalid",
|
||||
)
|
||||
except pylast.WSError as exc:
|
||||
msg = str(exc)
|
||||
|
||||
# Assert
|
||||
self.assertEqual(msg,
|
||||
"Unauthorized Token - This token has not been issued")
|
||||
|
||||
def test_proxy(self):
|
||||
# Arrange
|
||||
host = "https://example.com"
|
||||
port = 1234
|
||||
|
||||
# Act / Assert
|
||||
self.network.enable_proxy(host, port)
|
||||
self.assertTrue(self.network.is_proxy_enabled())
|
||||
self.assertEqual(self.network._get_proxy(),
|
||||
["https://example.com", 1234])
|
||||
|
||||
self.network.disable_proxy()
|
||||
self.assertFalse(self.network.is_proxy_enabled())
|
||||
|
||||
def test_album_search(self):
|
||||
# Arrange
|
||||
album = "Nevermind"
|
||||
|
||||
# Act
|
||||
search = self.network.search_for_album(album)
|
||||
results = search.get_next_page()
|
||||
|
||||
# Assert
|
||||
self.assertIsInstance(results, list)
|
||||
self.assertIsInstance(results[0], pylast.Album)
|
||||
|
||||
def test_artist_search(self):
|
||||
# Arrange
|
||||
artist = "Nirvana"
|
||||
|
||||
# Act
|
||||
search = self.network.search_for_artist(artist)
|
||||
results = search.get_next_page()
|
||||
|
||||
# Assert
|
||||
self.assertIsInstance(results, list)
|
||||
self.assertIsInstance(results[0], pylast.Artist)
|
||||
|
||||
def test_track_search(self):
|
||||
# Arrange
|
||||
artist = "Nirvana"
|
||||
track = "Smells Like Teen Spirit"
|
||||
|
||||
# Act
|
||||
search = self.network.search_for_track(artist, track)
|
||||
results = search.get_next_page()
|
||||
|
||||
# Assert
|
||||
self.assertIsInstance(results, list)
|
||||
self.assertIsInstance(results[0], pylast.Track)
|
||||
|
||||
def test_search_get_total_result_count(self):
|
||||
# Arrange
|
||||
artist = "Nirvana"
|
||||
track = "Smells Like Teen Spirit"
|
||||
search = self.network.search_for_track(artist, track)
|
||||
|
||||
# Act
|
||||
total = search.get_total_result_count()
|
||||
|
||||
# Assert
|
||||
self.assertGreater(int(total), 10000)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(failfast=True)
|
Loading…
Add table
Add a link
Reference in a new issue