Start tests refactor

This commit is contained in:
Hugo 2017-09-26 18:01:17 +03:00
parent a8522fded3
commit 25f419204a

View file

@ -30,7 +30,7 @@ def load_secrets():
@flaky(max_runs=5, min_passes=1) @flaky(max_runs=5, min_passes=1)
class TestPyLast(unittest.TestCase): class PyLastTestCase(unittest.TestCase):
secrets = None secrets = None
@ -56,6 +56,23 @@ class TestPyLast(unittest.TestCase):
if value is None or len(value) == 0: if value is None or len(value) == 0:
pytest.skip("Last.fm API is broken.") pytest.skip("Last.fm API is broken.")
class TestPyLastAlbum(PyLastTestCase):
def test_album_tags_are_topitems(self):
# Arrange
albums = self.network.get_user('RJ').get_top_albums()
# Act
tags = albums[0].item.get_top_tags(limit=1)
# Assert
self.assertGreater(len(tags), 0)
self.assertIsInstance(tags[0], pylast.TopItem)
class TestPyLastNetwork(PyLastTestCase):
def test_scrobble(self): def test_scrobble(self):
# Arrange # Arrange
artist = "Test Artist" artist = "Test Artist"
@ -73,6 +90,62 @@ class TestPyLast(unittest.TestCase):
self.assertEqual(str(last_scrobble.track.title), str(title)) self.assertEqual(str(last_scrobble.track.title), str(title))
self.assertEqual(str(last_scrobble.timestamp), str(timestamp)) 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), "test title")
self.assertEqual(str(current_track.artist), "Test Artist")
class TestPyLastTrack(PyLastTestCase):
def test_love(self):
# Arrange
artist = "Test Artist"
title = "test title"
track = self.network.get_track(artist, title)
lastfm_user = self.network.get_user(self.username)
# Act
track.love()
# Assert
loved = lastfm_user.get_loved_tracks(limit=1)
self.assertEqual(str(loved[0].track.artist), "Test Artist")
self.assertEqual(str(loved[0].track.title), "test title")
def test_unlove(self):
# Arrange
artist = pylast.Artist("Test Artist", self.network)
title = "test title"
track = pylast.Track(artist, title, self.network)
lastfm_user = self.network.get_user(self.username)
track.love()
# Act
track.unlove()
# Assert
loved = lastfm_user.get_loved_tracks(limit=1)
if len(loved): # OK to be empty but if not:
self.assertNotEqual(str(loved.track.artist), "Test Artist")
self.assertNotEqual(str(loved.track.title), "test title")
class TestPyLastUser(PyLastTestCase):
def test_get_user_registration(self): def test_get_user_registration(self):
# Arrange # Arrange
username = "RJ" username = "RJ"
@ -123,38 +196,6 @@ class TestPyLast(unittest.TestCase):
# Assert # Assert
self.assertIsNone(country) self.assertIsNone(country)
def test_love(self):
# Arrange
artist = "Test Artist"
title = "test title"
track = self.network.get_track(artist, title)
lastfm_user = self.network.get_user(self.username)
# Act
track.love()
# Assert
loved = lastfm_user.get_loved_tracks(limit=1)
self.assertEqual(str(loved[0].track.artist), "Test Artist")
self.assertEqual(str(loved[0].track.title), "test title")
def test_unlove(self):
# Arrange
artist = pylast.Artist("Test Artist", self.network)
title = "test title"
track = pylast.Track(artist, title, self.network)
lastfm_user = self.network.get_user(self.username)
track.love()
# Act
track.unlove()
# Assert
loved = lastfm_user.get_loved_tracks(limit=1)
if len(loved): # OK to be empty but if not:
self.assertNotEqual(str(loved.track.artist), "Test Artist")
self.assertNotEqual(str(loved.track.title), "test title")
def test_user_equals_none(self): def test_user_equals_none(self):
# Arrange # Arrange
lastfm_user = self.network.get_user(self.username) lastfm_user = self.network.get_user(self.username)
@ -197,34 +238,8 @@ class TestPyLast(unittest.TestCase):
self.assertGreaterEqual(len(user.get_loved_tracks(limit=None)), 23) self.assertGreaterEqual(len(user.get_loved_tracks(limit=None)), 23)
self.assertGreaterEqual(len(user.get_loved_tracks(limit=0)), 23) self.assertGreaterEqual(len(user.get_loved_tracks(limit=0)), 23)
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 class TestPyLast(PyLastTestCase):
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), "test title")
self.assertEqual(str(current_track.artist), "Test Artist")
def test_album_tags_are_topitems(self):
# Arrange
albums = self.network.get_user('RJ').get_top_albums()
# Act
tags = albums[0].item.get_top_tags(limit=1)
# Assert
self.assertGreater(len(tags), 0)
self.assertIsInstance(tags[0], pylast.TopItem)
def helper_is_thing_hashable(self, thing): def helper_is_thing_hashable(self, thing):
# Arrange # Arrange