aboutsummaryrefslogtreecommitdiff
path: root/tests/test_pandora/test_models.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_pandora/test_models.py')
-rw-r--r--tests/test_pandora/test_models.py93
1 files changed, 85 insertions, 8 deletions
diff --git a/tests/test_pandora/test_models.py b/tests/test_pandora/test_models.py
index 0d37ca0..cb650df 100644
--- a/tests/test_pandora/test_models.py
+++ b/tests/test_pandora/test_models.py
@@ -277,6 +277,11 @@ class TestPlaylistItemModel(TestCase):
277 AUDIO_URL_NO_MAP = {"audioUrl": "foo"} 277 AUDIO_URL_NO_MAP = {"audioUrl": "foo"}
278 WEIRD_FORMAT = {"audioUrlMap": {"highQuality": {}}} 278 WEIRD_FORMAT = {"audioUrlMap": {"highQuality": {}}}
279 279
280 def setUp(self):
281 self.client = Mock()
282 self.playlist = plm.PlaylistItem(self.client)
283 self.playlist.track_token = "token"
284
280 def test_audio_url_without_map(self): 285 def test_audio_url_without_map(self):
281 item = plm.PlaylistItem.from_json(Mock(), self.AUDIO_URL_NO_MAP) 286 item = plm.PlaylistItem.from_json(Mock(), self.AUDIO_URL_NO_MAP)
282 self.assertEqual(item.bitrate, 64) 287 self.assertEqual(item.bitrate, 64)
@@ -293,20 +298,57 @@ class TestPlaylistItemModel(TestCase):
293 self.assertIsNone(item.encoding) 298 self.assertIsNone(item.encoding)
294 self.assertIsNone(item.audio_url) 299 self.assertIsNone(item.audio_url)
295 300
301 def test_thumbs_up(self):
302 self.playlist.thumbs_up()
303 self.client.add_feedback.assert_called_with("token", True)
304
305 def test_thumbs_down(self):
306 self.playlist.thumbs_down()
307 self.client.add_feedback.assert_called_with("token", False)
308
309 def test_bookmark_song(self):
310 self.playlist.bookmark_song()
311 self.client.add_song_bookmark.assert_called_with("token")
312
313 def test_bookmark_artist(self):
314 self.playlist.bookmark_artist()
315 self.client.add_artist_bookmark.assert_called_with("token")
316
317 def test_sleep_song(self):
318 self.playlist.sleep()
319 self.client.sleep_song.assert_called_with("token")
320
296 321
297class TestPlaylistModel(TestCase): 322class TestPlaylistModel(TestCase):
298 323
324 def setUp(self):
325 self.client = Mock()
326 self.playlist = plm.PlaylistModel(self.client)
327
299 def test_unplayable_get_is_playable(self): 328 def test_unplayable_get_is_playable(self):
300 playlist = plm.PlaylistModel(Mock()) 329 self.playlist.audio_url = ""
301 playlist.audio_url = "" 330 self.assertFalse(self.playlist.get_is_playable())
302 self.assertFalse(playlist.get_is_playable())
303 331
304 def test_playable_get_is_playable(self): 332 def test_playable_get_is_playable(self):
305 client = Mock() 333 self.playlist.audio_url = "foo"
306 playlist = plm.PlaylistModel(client) 334 self.playlist.get_is_playable()
307 playlist.audio_url = "foo" 335 self.client.transport.test_url.assert_called_with("foo")
308 playlist.get_is_playable() 336
309 client.transport.test_url.assert_called_with("foo") 337 def test_not_implemented_interface_methods(self):
338 with self.assertRaises(NotImplementedError):
339 self.playlist.thumbs_up()
340
341 with self.assertRaises(NotImplementedError):
342 self.playlist.thumbs_down()
343
344 with self.assertRaises(NotImplementedError):
345 self.playlist.bookmark_song()
346
347 with self.assertRaises(NotImplementedError):
348 self.playlist.bookmark_artist()
349
350 with self.assertRaises(NotImplementedError):
351 self.playlist.sleep()
310 352
311 353
312class TestAdItem(TestCase): 354class TestAdItem(TestCase):
@@ -393,6 +435,13 @@ class TestAdItem(TestCase):
393 assert self.result.register_ad.called 435 assert self.result.register_ad.called
394 assert super_mock.called 436 assert super_mock.called
395 437
438 def test_noop_methods(self):
439 self.assertIsNone(self.result.thumbs_up())
440 self.assertIsNone(self.result.thumbs_down())
441 self.assertIsNone(self.result.bookmark_song())
442 self.assertIsNone(self.result.bookmark_artist())
443 self.assertIsNone(self.result.sleep())
444
396 445
397class TestSearchResultItem(TestCase): 446class TestSearchResultItem(TestCase):
398 447
@@ -471,6 +520,12 @@ class TestSearchResultItem(TestCase):
471 sm.SearchResultItem.from_json( 520 sm.SearchResultItem.from_json(
472 self.api_client_mock, self.UNKNOWN_JSON_DATA) 521 self.api_client_mock, self.UNKNOWN_JSON_DATA)
473 522
523 def test_interface(self):
524 result = sm.SearchResultItem(self.api_client_mock)
525
526 with self.assertRaises(NotImplementedError):
527 result.create_station()
528
474 529
475class TestArtistSearchResultItem(TestCase): 530class TestArtistSearchResultItem(TestCase):
476 531
@@ -642,6 +697,19 @@ class TestGenreStationList(TestCase):
642 self.assertTrue(stations.has_changed()) 697 self.assertTrue(stations.has_changed())
643 698
644 699
700class TestGenreStation(TestCase):
701
702 TEST_DATA = {"categoryName": "foo", "stations": []}
703
704 def test_get_playlist_throws_exception(self):
705 api_client = Mock()
706 genre_station = stm.GenreStation.from_json(api_client, self.TEST_DATA)
707
708 with self.assertRaisesRegex(
709 NotImplementedError, "Genre stations do not have playlists.*"):
710 genre_station.get_playlist()
711
712
645class TestStationList(TestCase): 713class TestStationList(TestCase):
646 714
647 TEST_DATA = { 715 TEST_DATA = {
@@ -694,3 +762,12 @@ class TestPandoraType(TestCase):
694 def test_it_returns_genre_for_unknown_string(self): 762 def test_it_returns_genre_for_unknown_string(self):
695 pt = plm.PandoraType.from_string("FOO") 763 pt = plm.PandoraType.from_string("FOO")
696 self.assertIs(plm.PandoraType.GENRE, pt) 764 self.assertIs(plm.PandoraType.GENRE, pt)
765
766
767class TestSyntheticField(TestCase):
768
769 def test_interface(self):
770 sf = m.SyntheticField(field="foo")
771
772 with self.assertRaises(NotImplementedError):
773 sf.formatter(None, None, None)