def test_num_handler_add_items(self): refs = ThreadingFuture() refs.set([Ref(uri='track1'), Ref(uri='track2')]) self.coreMock.playlists.get_items = MagicMock(return_value=refs) self.dispatcher.handleCommand('num9') self.coreMock.playlists.get_items.assert_called_with( 'local:playlist:playlist9.m3u') self.coreMock.tracklist.add.assert_called_with( uris=['track1', 'track2']) self.coreMock.playback.play.assert_called_with()
def test_get_albums(r_get_mock, get_music_root_mock, emby_client): expected = [ Ref(name=u'American Football', type='album', uri='emby:album:6e4a2da7df0502650bb9b091312c3dbf'), Ref(name=u'American Football', type='album', uri='emby:album:ca498ea939b28593744c051d9f5e74ed'), Ref(name=u'American Football', type='album', uri='emby:album:0db6395ab76b6edbaba3a51ef23d0aa3') ] with open('tests/data/get_albums0.json', 'r') as f: r_get_mock.return_value = json.load(f) assert emby_client.get_albums(0) == expected
def browse(c, type=None, order=('type', 'name COLLATE NOCASE'), **kwargs): filters, params = _filters(_BROWSE_FILTERS[type], **kwargs) sql = _BROWSE_QUERIES[type] % ( ' AND '.join(filters) or '1', ', '.join(order) ) logger.debug('SQLite browse query %r: %s', params, sql) return [Ref(**row) for row in c.execute(sql, params)]
def test_get_tracks(r_get_mock, get_music_root_mock, emby_client): expected = [ Ref(name=u'The One With the Tambourine', type='track', uri='emby:track:eb6c305bdb1e40d3b46909473c22d906'), Ref(name=u'Letters and Packages', type='track', uri='emby:track:7739d3830818c7aacf6c346172384914'), Ref(name=u'Five Silent Miles', type='track', uri='emby:track:f84df9f70e592a3abda82b1d78026608') ] with open('tests/data/get_tracks0.json', 'r') as f: r_get_mock.return_value = json.load(f) assert emby_client.get_tracks(0) == expected
def test_get_artists(r_get_mock, get_music_root_mock, emby_client): expected = [ Ref(name=u'Chairlift', type='artist', uri='emby:artist:e0361aff955c30f5a6dcc6fcf0c9d1cf'), Ref(name=u'Hans Zimmer', type='artist', uri='emby:artist:36de3368f493ebca94a55a411cc87862'), Ref(name=u'The Menzingers', type='artist', uri='emby:artist:21c8f78763231ece7defd07b5f3f56be') ] with open('tests/data/get_artists0.json', 'r') as f: r_get_mock.return_value = json.load(f) assert emby_client.get_artists() == expected
def test_playlist(): from mopidy.m3u.translator import playlist assert playlist(b'test.m3u') == Playlist(uri='m3u:test.m3u', name='test') assert playlist(b'test.m3u', [Ref(uri='file:///test.mp3')], 1) == Playlist(uri='m3u:test.m3u', name='test', tracks=[Track(uri='file:///test.mp3')], last_modified=1000)
def test_default_folders(self): assert self.library.browse("soundcloud:directory") == [ Ref( name="Following", type="directory", uri="soundcloud:directory:following", ), Ref(name="Liked", type="directory", uri="soundcloud:directory:liked"), Ref(name="Sets", type="directory", uri="soundcloud:directory:sets"), Ref( name="Stream", type="directory", uri="soundcloud:directory:stream", ), ]
def test_default_folders(self): try: from mopidy.models import Ref except ImportError as e: self.skipTest(e.message) self.assertEquals(self.library.browse('soundcloud:directory'), [ Ref(name='Following', type='directory', uri='soundcloud:directory:following'), Ref(name='Liked', type='directory', uri='soundcloud:directory:liked'), Ref(name='Sets', type='directory', uri='soundcloud:directory:sets'), Ref(name='Stream', type='directory', uri='soundcloud:directory:stream') ])
def test_add_folder(self): try: from mopidy.models import Ref except ImportError as e: self.skipTest(e.message) self.assertEquals( new_folder('Test', ['test']), Ref(name='Test', type='directory', uri='soundcloud:directory:test'))
def as_list(self): '''Get a list of the currently available playlists. Returns a list of `mopidy.models.Ref` objects referring to the playlists. In other words, no information about the playlists’ content is given.''' logger.debug('Playlist: as_list') audiolists = [l for l in self.plex.playlists() if l.playlistType == 'audio'] return [Ref(uri='plex:playlist:{}'.format(playlist.ratingKey), name=playlist.title) for playlist in audiolists]
def test_playlist(): from mopidy.m3u.translator import playlist path = pathlib.Path("test.m3u") assert playlist(path) == Playlist(uri="m3u:test.m3u", name="test") assert playlist(path, [Ref(uri="file:///test.mp3")], 1) == Playlist( uri="m3u:test.m3u", name="test", tracks=[Track(uri="file:///test.mp3")], last_modified=1000, )
def test_name(self): name = 'a name' ref = Ref(name=name) self.assertEqual(ref.name, name) with self.assertRaises(AttributeError): ref.name = None
def test_uri(self): uri = 'an_uri' ref = Ref(uri=uri) self.assertEqual(ref.uri, uri) with self.assertRaises(AttributeError): ref.uri = None
def test_repr_without_results(self): assert "Ref(name='foo', type='artist', uri='uri')" == repr( Ref(uri="uri", name="foo", type="artist"))
def test_name(self): name = 'a name' ref = Ref(name=name) self.assertEqual(ref.name, name) self.assertRaises(AttributeError, setattr, ref, 'name', None)
def track_to_ref(self, track): return Ref(uri=track.uri, name=track.name, type=Ref.TRACK)
def test_uri(self): uri = "an_uri" ref = Ref(uri=uri) assert ref.uri == uri with self.assertRaises(AttributeError): ref.uri = None
def test_to_json_and_back(self): ref1 = Ref(uri="uri") serialized = json.dumps(ref1, cls=ModelJSONEncoder) ref2 = json.loads(serialized, object_hook=model_json_decoder) assert ref1 == ref2
def test_serialize_without_results(self): self.assertDictEqual({ "__model__": "Ref", "uri": "uri" }, Ref(uri="uri").serialize())
def test_del_name(self): ref = Ref(name='foo') with self.assertRaises(AttributeError): del ref.name
def playlist_to_ref(self, playlist): return Ref(uri=playlist.uri, name=playlist.name, type=Ref.PLAYLIST)
def test_invalid_kwarg(self): with self.assertRaises(TypeError): Ref(foo='baz')
def test_name(self): name = "a name" ref = Ref(name=name) assert ref.name == name with self.assertRaises(AttributeError): ref.name = None
def test_uri(self): uri = 'an_uri' ref = Ref(uri=uri) self.assertEqual(ref.uri, uri) self.assertRaises(AttributeError, setattr, ref, 'uri', None)
def test_serialize_without_results(self): self.assertDictEqual({ '__model__': 'Ref', 'uri': 'uri' }, Ref(uri='uri').serialize())
def test_repr_without_results(self): self.assertEquals("Ref(name=u'foo', type=u'artist', uri=u'uri')", repr(Ref(uri='uri', name='foo', type='artist')))
def browse(c, type=None, order=("type", "name COLLATE NOCASE"), **kwargs): filters, params = _filters(_BROWSE_FILTERS[type], **kwargs) sql = _BROWSE_QUERIES[type] % (" AND ".join(filters) or "1", ", ".join(order)) logger.debug("SQLite browse query %r: %s", params, sql) return [Ref(**row) for row in c.execute(sql, params)]
def test_to_json_and_back(self): ref1 = Ref(uri='uri') serialized = json.dumps(ref1, cls=ModelJSONEncoder) ref2 = json.loads(serialized, object_hook=model_json_decoder) self.assertEqual(ref1, ref2)
def test_add_folder(self): assert new_folder("Test", ["test"]) == Ref(name="Test", type="directory", uri="soundcloud:directory:test")