From a06401b4a0c5a654eb8e6320827bc0b88b438cac Mon Sep 17 00:00:00 2001 From: Il`ya Semyonov Date: Thu, 16 Apr 2020 22:27:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D0=B5=20best=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D1=81=D1=83=20Track?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/conftest.py | 12 ++++++------ tests/test_track.py | 20 +++++++++----------- yandex_music/track/track.py | 8 ++++++-- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 3279795..7454833 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -50,12 +50,12 @@ def track_factory(major, normalization): class TrackFactory: def get(self, artists, albums): return Track(TestTrack.id, TestTrack.title, TestTrack.available, artists, albums, - TestTrack.available_for_premium_users, TestTrack.lyrics_available, TestTrack.real_id, - TestTrack.og_image, TestTrack.type, TestTrack.cover_uri, major, TestTrack.duration_ms, - TestTrack.storage_dir, TestTrack.file_size, normalization, TestTrack.error, TestTrack.regions, - TestTrack.available_as_rbt, TestTrack.content_warning, TestTrack.explicit, - TestTrack.preview_duration_ms, TestTrack.available_full_without_permission, TestTrack.version, - TestTrack.remember_position) + TestTrack.available_for_premium_users, TestTrack.lyrics_available, TestTrack.best, + TestTrack.real_id, TestTrack.og_image, TestTrack.type, TestTrack.cover_uri, major, + TestTrack.duration_ms, TestTrack.storage_dir, TestTrack.file_size, normalization, + TestTrack.error, TestTrack.regions, TestTrack.available_as_rbt, TestTrack.content_warning, + TestTrack.explicit, TestTrack.preview_duration_ms, TestTrack.available_full_without_permission, + TestTrack.version, TestTrack.remember_position) return TrackFactory() diff --git a/tests/test_track.py b/tests/test_track.py index c407371..19e5f45 100644 --- a/tests/test_track.py +++ b/tests/test_track.py @@ -7,6 +7,7 @@ class TestTrack: available = True available_for_premium_users = True lyrics_available = False + best = False real_id = '10994777' og_image = 'avatars.yandex.net/get-music-content/28589/daef4251.a.1193829-1/%%' type = 'music' @@ -32,6 +33,7 @@ class TestTrack: assert track.artists == [artist] assert track.albums == [album] assert track.lyrics_available == self.lyrics_available + assert track.best == self.best assert track.real_id == self.real_id assert track.og_image == self.og_image assert track.type == self.type @@ -58,21 +60,16 @@ class TestTrack: assert Track.de_list({}, client) == [] def test_de_json_required(self, client, artist, album): - json_dict = {'id_': self.id, 'title': self.title, 'available': self.available, - 'artists': [artist.to_dict()], 'albums': [album.to_dict()]} + json_dict = {'id_': self.id} track = Track.de_json(json_dict, client) assert track.id == self.id - assert track.title == self.title - assert track.available == self.available - assert track.artists == [artist] - assert track.albums == [album] def test_de_json_all(self, client, artist, album, major, normalization): json_dict = {'id_': self.id, 'title': self.title, 'available': self.available, 'available_for_premium_users': self.available_for_premium_users, 'artists': [artist.to_dict()], 'albums': [album.to_dict()], - 'lyrics_available': self.lyrics_available, 'real_id': self.real_id, + 'lyrics_available': self.lyrics_available, 'best': self.best, 'real_id': self.real_id, 'og_image': self.og_image, 'type_': self.type, 'cover_uri': self.cover_uri, 'major': major.to_dict(), 'duration_ms': self.duration_ms, 'storage_dir': self.storage_dir, 'file_size': self.file_size, 'normalization': normalization.to_dict(), 'error': self.error, @@ -90,6 +87,7 @@ class TestTrack: assert track.artists == [artist] assert track.albums == [album] assert track.lyrics_available == self.lyrics_available + assert track.best == self.best assert track.real_id == self.real_id assert track.og_image == self.og_image assert track.type == self.type @@ -109,10 +107,10 @@ class TestTrack: assert track.version == self.version assert track.remember_position == self.remember_position - def test_equality(self, artist, album): - a = Track(self.id, self.title, self.available, [artist], [album]) - b = Track(self.id, '', self.available, [artist], []) - c = Track(self.id, self.title, self.available, [artist], [album]) + def test_equality(self): + a = Track(self.id) + b = Track(10) + c = Track(self.id) assert a != b assert hash(a) != hash(b) diff --git a/yandex_music/track/track.py b/yandex_music/track/track.py index ae24b60..c0a0e84 100644 --- a/yandex_music/track/track.py +++ b/yandex_music/track/track.py @@ -23,6 +23,7 @@ class Track(YandexMusicObject): albums (:obj:`list` из :obj:`yandex_music.Album`): Альбомы. available_for_premium_users (:obj:`bool`): Доступен ли для пользователей с подпиской. lyrics_available (:obj:`bool`): Доступен ли текст песни. + best (:obj:`bool`): Лучшей ли трек TODO. real_id (:obj:`int` | :obj:`str`): TODO. og_image (:obj:`str`): Ссылка на превью Open Graph. type (:obj:`str`): Тип. @@ -52,6 +53,7 @@ class Track(YandexMusicObject): albums (:obj:`list` из :obj:`yandex_music.Album`, optional): Альбомы. available_for_premium_users (:obj:`bool`, optional): Доступен ли для пользователей с подпиской. lyrics_available (:obj:`bool`, optional): Доступен ли текст песни. + best (:obj:`bool`, optional): Лучшей ли трек TODO. real_id (:obj:`int` | :obj:`str`, optional): TODO. og_image (:obj:`str`, optional): Ссылка на превью Open Graph. type_ (:obj:`str`, optional): Тип. @@ -82,6 +84,7 @@ class Track(YandexMusicObject): albums: List['Album'] = None, available_for_premium_users: Optional[bool] = None, lyrics_available: Optional[bool] = None, + best: Optional[bool] = None, real_id: Optional[Union[str, int]] = None, og_image: Optional[str] = None, type_: Optional[str] = None, @@ -105,13 +108,14 @@ class Track(YandexMusicObject): super().handle_unknown_kwargs(self, **kwargs) self.id = id_ + self.title = title self.available = available self.artists = artists self.albums = albums - self.available_for_premium_users = available_for_premium_users self.lyrics_available = lyrics_available + self.best = best self.real_id = real_id self.og_image = og_image self.type = type_ @@ -134,7 +138,7 @@ class Track(YandexMusicObject): self.download_info = None self.client = client - self._id_attrs = (self.id, self.title, self.available, self.artists, self.albums) + self._id_attrs = (self.id,) def get_download_info(self, get_direct_links=False) -> List['DownloadInfo']: """Сокращение для::