Добавлена документация и тесты для новых полей
このコミットが含まれているのは:
コミット
1567378216
|
@ -108,13 +108,16 @@ def album_without_tracks(album_factory, artist_without_tracks):
|
|||
@pytest.fixture(scope='session')
|
||||
def playlist_factory(user, cover, made_for, track_short, play_counter, playlist_absence):
|
||||
class PlaylistFactory:
|
||||
def get(self):
|
||||
def get(self, similar_playlists, last_owner_playlists):
|
||||
return Playlist(user, cover, made_for, play_counter, playlist_absence, TestPlaylist.uid, TestPlaylist.kind,
|
||||
TestPlaylist.title, TestPlaylist.track_count, TestPlaylist.tags, TestPlaylist.revision,
|
||||
TestPlaylist.snapshot, TestPlaylist.visibility, TestPlaylist.collective,
|
||||
TestPlaylist.created, TestPlaylist.modified, TestPlaylist.available, TestPlaylist.is_banner,
|
||||
TestPlaylist.is_premiere, TestPlaylist.duration_ms, TestPlaylist.og_image, [track_short],
|
||||
TestPlaylist.prerolls, TestPlaylist.likes_count, TestPlaylist.generated_playlist_type,
|
||||
TestPlaylist.url_part, TestPlaylist.created, TestPlaylist.modified,
|
||||
TestPlaylist.available, TestPlaylist.is_banner, TestPlaylist.is_premiere,
|
||||
TestPlaylist.duration_ms, TestPlaylist.og_image, TestPlaylist.og_title,
|
||||
TestPlaylist.image, cover, TestPlaylist.background_color, TestPlaylist.text_color,
|
||||
TestPlaylist.id_for_from, [track_short], TestPlaylist.prerolls, TestPlaylist.likes_count,
|
||||
similar_playlists, last_owner_playlists, TestPlaylist.generated_playlist_type,
|
||||
TestPlaylist.animated_cover_uri, TestPlaylist.ever_played, TestPlaylist.description,
|
||||
TestPlaylist.description_formatted, TestPlaylist.is_for_from, TestPlaylist.regions)
|
||||
|
||||
|
@ -122,8 +125,13 @@ def playlist_factory(user, cover, made_for, track_short, play_counter, playlist_
|
|||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def playlist(playlist_factory):
|
||||
return playlist_factory.get()
|
||||
def playlist(playlist_factory, playlist_without_nested_playlists):
|
||||
return playlist_factory.get([playlist_without_nested_playlists], [playlist_without_nested_playlists])
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def playlist_without_nested_playlists(playlist_factory):
|
||||
return playlist_factory.get([], [])
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
|
|
|
@ -11,6 +11,7 @@ class TestPlaylist:
|
|||
snapshot = 1
|
||||
visibility = 'public'
|
||||
collective = False
|
||||
url_part = 'daily'
|
||||
created = '2018-04-29T21:00:00+00:00'
|
||||
modified = '2019-11-09T03:00:00+00:00'
|
||||
available = True
|
||||
|
@ -18,6 +19,11 @@ class TestPlaylist:
|
|||
is_premiere = False
|
||||
duration_ms = 12402690
|
||||
og_image = 'avatars.yandex.net/get-music-user-playlist/38125/q0ahkhfQE3neTk/%%?1572609906461'
|
||||
og_title = 'Плейлист дня'
|
||||
image = ''
|
||||
background_color = ''
|
||||
text_color = ''
|
||||
id_for_from = 'playlist_of_the_day'
|
||||
prerolls = []
|
||||
likes_count = 1
|
||||
generated_playlist_type = 'playlistOfTheDay'
|
||||
|
@ -28,7 +34,8 @@ class TestPlaylist:
|
|||
is_for_from = None
|
||||
regions = None
|
||||
|
||||
def test_expected_values(self, playlist, user, cover, made_for, track_short, play_counter, playlist_absence):
|
||||
def test_expected_values(self, playlist, user, cover, made_for, track_short, play_counter, playlist_absence,
|
||||
playlist_without_nested_playlists):
|
||||
assert playlist.owner == user
|
||||
assert playlist.uid == self.uid
|
||||
assert playlist.kind == self.kind
|
||||
|
@ -43,6 +50,7 @@ class TestPlaylist:
|
|||
assert playlist.snapshot == self.snapshot
|
||||
assert playlist.visibility == self.visibility
|
||||
assert playlist.collective == self.collective
|
||||
assert playlist.url_part == self.url_part
|
||||
assert playlist.created == self.created
|
||||
assert playlist.modified == self.modified
|
||||
assert playlist.available == self.available
|
||||
|
@ -50,9 +58,17 @@ class TestPlaylist:
|
|||
assert playlist.is_premiere == self.is_premiere
|
||||
assert playlist.duration_ms == self.duration_ms
|
||||
assert playlist.og_image == self.og_image
|
||||
assert playlist.og_title == self.og_title
|
||||
assert playlist.image == self.image
|
||||
assert playlist.cover_without_text == cover
|
||||
assert playlist.background_color == self.background_color
|
||||
assert playlist.text_color == self.text_color
|
||||
assert playlist.id_for_from == self.id_for_from
|
||||
assert playlist.tracks == [track_short]
|
||||
assert playlist.prerolls == self.prerolls
|
||||
assert playlist.likes_count == self.likes_count
|
||||
assert playlist.similar_playlists == [playlist_without_nested_playlists]
|
||||
assert playlist.last_owner_playlists == [playlist_without_nested_playlists]
|
||||
assert playlist.generated_playlist_type == self.generated_playlist_type
|
||||
assert playlist.animated_cover_uri == self.animated_cover_uri
|
||||
assert playlist.ever_played == self.ever_played
|
||||
|
@ -68,21 +84,18 @@ class TestPlaylist:
|
|||
assert Playlist.de_list({}, client) == []
|
||||
|
||||
def test_de_json_required(self, client, user, cover, made_for, play_counter, playlist_absence):
|
||||
json_dict = {'owner': user.to_dict(), 'uid': self.uid, 'kind': self.kind, 'title': self.title,
|
||||
'track_count': self.track_count, 'cover': cover.to_dict(), 'made_for': made_for.to_dict(),
|
||||
json_dict = {'owner': user.to_dict(), 'cover': cover.to_dict(), 'made_for': made_for.to_dict(),
|
||||
'play_counter': play_counter.to_dict(), 'playlist_absence': playlist_absence.to_dict()}
|
||||
playlist = Playlist.de_json(json_dict, client)
|
||||
|
||||
assert playlist.owner == user
|
||||
assert playlist.uid == self.uid
|
||||
assert playlist.kind == self.kind
|
||||
assert playlist.title == self.title
|
||||
assert playlist.track_count == self.track_count
|
||||
assert playlist.cover == cover
|
||||
assert playlist.made_for == made_for
|
||||
assert playlist.play_counter == play_counter
|
||||
assert playlist.playlist_absence == playlist_absence
|
||||
|
||||
def test_de_json_all(self, client, user, cover, made_for, track_short, play_counter, playlist_absence):
|
||||
def test_de_json_all(self, client, user, cover, made_for, track_short, play_counter, playlist_absence,
|
||||
playlist_without_nested_playlists):
|
||||
json_dict = {'owner': user.to_dict(), 'uid': self.uid, 'kind': self.kind, 'title': self.title,
|
||||
'track_count': self.track_count, 'cover': cover.to_dict(), 'made_for': made_for.to_dict(),
|
||||
'play_counter': play_counter.to_dict(), 'playlist_absence': playlist_absence.to_dict(),
|
||||
|
@ -91,10 +104,14 @@ class TestPlaylist:
|
|||
'modified': self.modified, 'available': self.available, 'is_banner': self.is_banner,
|
||||
'is_premiere': self.is_premiere, 'duration_ms': self.duration_ms, 'og_image': self.og_image,
|
||||
'tracks': [track_short.to_dict()], 'prerolls': self.prerolls, 'likes_count': self.likes_count,
|
||||
'generated_playlist_type': self.generated_playlist_type,
|
||||
'generated_playlist_type': self.generated_playlist_type, 'url_part': self.url_part,
|
||||
'animated_cover_uri': self.animated_cover_uri, 'ever_played': self.ever_played,
|
||||
'description': self.description, 'description_formatted': self.description_formatted,
|
||||
'is_for_from': self.is_for_from, 'regions': self.regions}
|
||||
'is_for_from': self.is_for_from, 'regions': self.regions, 'og_title': self.og_title,
|
||||
'image': self.image, 'id_for_from': self.id_for_from, 'background_color': self.background_color,
|
||||
'text_color': self.text_color, 'cover_without_text': cover.to_dict(),
|
||||
'similar_playlists': [playlist_without_nested_playlists.to_dict()],
|
||||
'last_owner_playlists': [playlist_without_nested_playlists.to_dict()]}
|
||||
playlist = Playlist.de_json(json_dict, client)
|
||||
|
||||
assert playlist.owner == user
|
||||
|
@ -111,6 +128,7 @@ class TestPlaylist:
|
|||
assert playlist.snapshot == self.snapshot
|
||||
assert playlist.visibility == self.visibility
|
||||
assert playlist.collective == self.collective
|
||||
assert playlist.url_part == self.url_part
|
||||
assert playlist.created == self.created
|
||||
assert playlist.modified == self.modified
|
||||
assert playlist.available == self.available
|
||||
|
@ -118,9 +136,17 @@ class TestPlaylist:
|
|||
assert playlist.is_premiere == self.is_premiere
|
||||
assert playlist.duration_ms == self.duration_ms
|
||||
assert playlist.og_image == self.og_image
|
||||
assert playlist.og_title == self.og_title
|
||||
assert playlist.image == self.image
|
||||
assert playlist.cover_without_text == cover
|
||||
assert playlist.background_color == self.background_color
|
||||
assert playlist.text_color == self.text_color
|
||||
assert playlist.id_for_from == self.id_for_from
|
||||
assert playlist.tracks == [track_short]
|
||||
assert playlist.prerolls == self.prerolls
|
||||
assert playlist.likes_count == self.likes_count
|
||||
assert playlist.similar_playlists == [playlist_without_nested_playlists]
|
||||
assert playlist.last_owner_playlists == [playlist_without_nested_playlists]
|
||||
assert playlist.generated_playlist_type == self.generated_playlist_type
|
||||
assert playlist.animated_cover_uri == self.animated_cover_uri
|
||||
assert playlist.ever_played == self.ever_played
|
||||
|
|
|
@ -21,7 +21,7 @@ class Playlist(YandexMusicObject):
|
|||
cover (:obj:`yandex_music.Cover`): Обложка альбома.
|
||||
made_for (:obj:`yandex_music.MadeFor`): Пользователь для которого был создан плейлист. Присутствует только у
|
||||
персональных плейлистов.
|
||||
play_counter (:obj:`yandex_music.PlayCounter`): Счетчик дней. Присутствует только у плейлиста дня.
|
||||
play_counter (:obj:`yandex_music.PlayCounter`): Счётчик дней. Присутствует только у плейлиста дня.
|
||||
playlist_absence (:obj:`yandex_music.PlaylistAbsence`): Причина отсутствия плейлиста.
|
||||
uid (:obj:`int`): Идентификатор владельца плейлиста.
|
||||
kind (:obj:`int`): Идентификатор плейлиста.
|
||||
|
@ -32,6 +32,7 @@ class Playlist(YandexMusicObject):
|
|||
snapshot (:obj:`int`): Версия плейлиста. Увеличивается на 1 при каждом изменении.
|
||||
visibility (:obj:`str`): Видимость плейлиста.
|
||||
collective (:obj:`bool`): Есть ли у плейлиста соавторы.
|
||||
url_part (:obj:`str`): Часть ссылки на плейлист ('daily`).
|
||||
created (:obj:`str`): Дата создания в формате ISO 8601.
|
||||
modified (:obj:`str`): Дата последнего изменения в формате ISO 8601.
|
||||
available (:obj:`bool`): Доступен TODO.
|
||||
|
@ -39,9 +40,17 @@ class Playlist(YandexMusicObject):
|
|||
is_premiere (:obj:`bool`): Является ли премьерой TODO.
|
||||
duration_ms (:obj:`int`): Длительность в миллисекундах.
|
||||
og_image (:obj:`str`): Ссылка на превью Open Graph.
|
||||
og_title (:obj:`str`): Заголовок Open Graph.
|
||||
image (:obj:`str`): Изображение TODO.
|
||||
cover_without_text (:obj:`yandex_music.Cover`): Обложка без текста.
|
||||
background_color (:obj:`str`): Цвет заднего фона TODO.
|
||||
text_color (:obj:`str`): Цвет текста TODO.
|
||||
id_for_from (:obj:`str`): Откуда пришло событие (уникальный идентификатор объекта) TODO.
|
||||
tracks (:obj:`list` из :obj:`yandex_music.TrackShort`): Список треков.
|
||||
prerolls (:obj:`list`): Прерол, проигрываемый перед плейлистом. Присутствует только у персональных плейлистов.
|
||||
likes_count (:obj:`int`): Количество лайков.
|
||||
similar_playlists (:obj:`list` из :obj:`yandex_music.Playlist`): Похожие плейлисты.
|
||||
last_owner_playlists (:obj:`list` из :obj:`yandex_music.Playlist`): Последние плейлисты владельца.
|
||||
generated_playlist_type (:obj:`str`): Тип генерируемого плейлиста.
|
||||
animated_cover_uri (:obj:`str`): Ссылка на анимированную обложку.
|
||||
ever_played (:obj:`str`): Играл ли этот плейлист. Присутствует только у персональных плейлистов. TODO
|
||||
|
@ -54,9 +63,9 @@ class Playlist(YandexMusicObject):
|
|||
Args:
|
||||
owner (:obj:`yandex_music.User`, optional): Владелец плейлиста.
|
||||
cover (:obj:`yandex_music.Cover`, optional): Обложка альбома.
|
||||
made_for (:obj:`yandex_music.MadeFor`, optional): Пользователь для которого был создан плейлист. Присутствует только у
|
||||
персональных плейлистов.
|
||||
play_counter (:obj:`yandex_music.PlayCounter`, optional): Счетчик дней. Присутствует только у плейлиста дня.
|
||||
made_for (:obj:`yandex_music.MadeFor`, optional): Пользователь для которого был создан плейлист. Присутствует
|
||||
только у персональных плейлистов.
|
||||
play_counter (:obj:`yandex_music.PlayCounter`, optional): Счётчик дней. Присутствует только у плейлиста дня.
|
||||
playlist_absence (:obj:`yandex_music.PlaylistAbsence`, optional): Причина отсутствия плейлиста.
|
||||
uid (:obj:`int`, optional): Идентификатор владельца плейлиста.
|
||||
kind (:obj:`int`, optional): Идентификатор плейлиста.
|
||||
|
@ -67,6 +76,7 @@ class Playlist(YandexMusicObject):
|
|||
snapshot (:obj:`int`, optional): Версия плейлиста. Увеличивается на 1 при каждом изменении.
|
||||
visibility (:obj:`str`, optional): Видимость плейлиста.
|
||||
collective (:obj:`bool`, optional): Есть ли у плейлиста соавторы.
|
||||
url_part (:obj:`str`, optional): Часть ссылки на плейлист ('daily`).
|
||||
created (:obj:`str`, optional): Дата создания в формате ISO 8601.
|
||||
modified (:obj:`str`, optional): Дата последнего изменения в формате ISO 8601.
|
||||
available (:obj:`bool`, optional): Доступен TODO.
|
||||
|
@ -74,10 +84,18 @@ class Playlist(YandexMusicObject):
|
|||
is_premiere (:obj:`bool`, optional): Является ли премьерой TODO.
|
||||
duration_ms (:obj:`int`, optional): Длительность в миллисекундах.
|
||||
og_image (:obj:`str`, optional): Ссылка на превью Open Graph.
|
||||
og_title (:obj:`str`, optional): Заголовок Open Graph.
|
||||
image (:obj:`str`, optional): Изображение TODO.
|
||||
cover_without_text (:obj:`yandex_music.Cover`, optional): Обложка без текста.
|
||||
background_color (:obj:`str`, optional): Цвет заднего фона TODO.
|
||||
text_color (:obj:`str`, optional): Цвет текста TODO.
|
||||
id_for_from (:obj:`str`, optional): Откуда пришло событие (уникальный идентификатор объекта) TODO.
|
||||
tracks (:obj:`list` из :obj:`yandex_music.TrackShort`, optional): Список треков.
|
||||
prerolls (:obj:`list`, optional): Прерол, проигрываемый перед плейлистом. Присутствует только у персональных
|
||||
плейлистов.
|
||||
likes_count (:obj:`int`, optional): Количество лайков.
|
||||
similar_playlists (:obj:`list` из :obj:`yandex_music.Playlist`, optional): Похожие плейлисты.
|
||||
last_owner_playlists (:obj:`list` из :obj:`yandex_music.Playlist`, optional): Последние плейлисты владельца.
|
||||
generated_playlist_type (:obj:`str`, optional): Тип генерируемого плейлиста.
|
||||
animated_cover_uri (:obj:`str`, optional): Ссылка на анимированную обложку.
|
||||
ever_played (:obj:`str`, optional): Играл ли этот плейлист. Присутствует только у персональных плейлистов. TODO
|
||||
|
@ -121,8 +139,8 @@ class Playlist(YandexMusicObject):
|
|||
tracks: List['TrackShort'] = None,
|
||||
prerolls: Optional[list] = None,
|
||||
likes_count: Optional[int] = None,
|
||||
similar_playlists: Optional[dict] = None,
|
||||
last_owner_playlists: Optional[dict] = None,
|
||||
similar_playlists: List['Playlist'] = None,
|
||||
last_owner_playlists: List['Playlist'] = None,
|
||||
generated_playlist_type: Optional[str] = None,
|
||||
animated_cover_uri: Optional[str] = None,
|
||||
ever_played: Optional[bool] = None,
|
||||
|
|
読み込み中…
新しいイシューから参照