Добавлена документация и тесты для новых полей

このコミットが含まれているのは:
Il`ya Semyonov 2020-06-06 12:37:03 +03:00
コミット 1567378216
3個のファイルの変更74行の追加22行の削除

ファイルの表示

@ -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,