Исправлена десериализация несуществующего исполнителя.
Поле week у класса Ratings теперь опциональное.
このコミットが含まれているのは:
コミット
35e6d2d8f9
|
@ -22,12 +22,13 @@ from . import TestCounts, TestTrackId, TestCaseForms, TestRatings, TestIcon, Tes
|
||||||
def artist_factory(cover, counts, ratings, link, description):
|
def artist_factory(cover, counts, ratings, link, description):
|
||||||
class ArtistFactory:
|
class ArtistFactory:
|
||||||
def get(self, popular_tracks):
|
def get(self, popular_tracks):
|
||||||
return Artist(TestArtist.id, TestArtist.name, cover, TestArtist.various, TestArtist.composer,
|
return Artist(TestArtist.id, TestArtist.error, TestArtist.name, cover, TestArtist.various,
|
||||||
TestArtist.genres, TestArtist.op_image, TestArtist.no_pictures_from_search, counts,
|
TestArtist.composer, TestArtist.genres, TestArtist.op_image,
|
||||||
TestArtist.available, ratings, [link], TestArtist.tickets_available, TestArtist.likes_count,
|
TestArtist.no_pictures_from_search, counts, TestArtist.available, ratings, [link],
|
||||||
popular_tracks, TestArtist.regions, TestArtist.decomposed, TestArtist.full_names, description,
|
TestArtist.tickets_available, TestArtist.likes_count, popular_tracks, TestArtist.regions,
|
||||||
TestArtist.countries, TestArtist.en_wikipedia_link, TestArtist.db_aliases, TestArtist.aliases,
|
TestArtist.decomposed, TestArtist.full_names, description, TestArtist.countries,
|
||||||
TestArtist.init_date, TestArtist.end_date)
|
TestArtist.en_wikipedia_link, TestArtist.db_aliases, TestArtist.aliases, TestArtist.init_date,
|
||||||
|
TestArtist.end_date)
|
||||||
|
|
||||||
return ArtistFactory()
|
return ArtistFactory()
|
||||||
|
|
||||||
|
@ -242,7 +243,7 @@ def video_supplement():
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
@pytest.fixture(scope='session')
|
||||||
def ratings():
|
def ratings():
|
||||||
return Ratings(TestRatings.week, TestRatings.month, TestRatings.day)
|
return Ratings(TestRatings.month, TestRatings.week, TestRatings.day)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
@pytest.fixture(scope='session')
|
||||||
|
|
|
@ -3,6 +3,7 @@ from yandex_music import Artist
|
||||||
|
|
||||||
class TestArtist:
|
class TestArtist:
|
||||||
id = 10987
|
id = 10987
|
||||||
|
error = 'not-found'
|
||||||
name = 'Elvis Presley'
|
name = 'Elvis Presley'
|
||||||
various = False
|
various = False
|
||||||
composer = None
|
composer = None
|
||||||
|
@ -24,6 +25,7 @@ class TestArtist:
|
||||||
|
|
||||||
def test_expected_values(self, artist, cover, counts, ratings, link, track_without_artists_and_albums, description):
|
def test_expected_values(self, artist, cover, counts, ratings, link, track_without_artists_and_albums, description):
|
||||||
assert artist.id == self.id
|
assert artist.id == self.id
|
||||||
|
assert artist.error == self.error
|
||||||
assert artist.name == self.name
|
assert artist.name == self.name
|
||||||
assert artist.various == self.various
|
assert artist.various == self.various
|
||||||
assert artist.composer == self.composer
|
assert artist.composer == self.composer
|
||||||
|
@ -56,27 +58,26 @@ class TestArtist:
|
||||||
assert Artist.de_list({}, client) == []
|
assert Artist.de_list({}, client) == []
|
||||||
|
|
||||||
def test_de_json_required(self, client, cover):
|
def test_de_json_required(self, client, cover):
|
||||||
json_dict = {'id_': self.id, 'name': self.name, 'cover': cover.to_dict()}
|
json_dict = {'id_': self.id}
|
||||||
artist = Artist.de_json(json_dict, client)
|
artist = Artist.de_json(json_dict, client)
|
||||||
|
|
||||||
assert artist.id == self.id
|
assert artist.id == self.id
|
||||||
assert artist.name == self.name
|
|
||||||
assert artist.cover == cover
|
|
||||||
|
|
||||||
def test_de_json_all(self, client, cover, counts, ratings, link, track_without_artists, description):
|
def test_de_json_all(self, client, cover, counts, ratings, link, track_without_artists, description):
|
||||||
json_dict = {'id_': self.id, 'name': self.name, 'various': self.various, 'composer': self.composer,
|
json_dict = {'id_': self.id, 'error': self.error, 'name': self.name, 'various': self.various,
|
||||||
'cover': cover.to_dict(), 'genres': self.genres, 'op_image': self.op_image,
|
'composer': self.composer, 'cover': cover.to_dict(), 'genres': self.genres,
|
||||||
'no_pictures_from_search': self.no_pictures_from_search, 'counts': counts.to_dict(),
|
'op_image': self.op_image, 'no_pictures_from_search': self.no_pictures_from_search,
|
||||||
'available': self.available, 'ratings': ratings.to_dict(), 'links': [link.to_dict()],
|
'counts': counts.to_dict(), 'available': self.available, 'ratings': ratings.to_dict(),
|
||||||
'tickets_available': self.tickets_available, 'likes_count': self.likes_count,
|
'links': [link.to_dict()], 'tickets_available': self.tickets_available,
|
||||||
'popular_tracks': [track_without_artists.to_dict()], 'regions': self.regions,
|
'likes_count': self.likes_count, 'popular_tracks': [track_without_artists.to_dict()],
|
||||||
'decomposed': self.decomposed, 'full_names': self.full_names, 'description': description.to_dict(),
|
'regions': self.regions, 'decomposed': self.decomposed, 'full_names': self.full_names,
|
||||||
'countries': self.countries, 'en_wikipedia_link': self.en_wikipedia_link,
|
'description': description.to_dict(), 'countries': self.countries,
|
||||||
'db_aliases': self.db_aliases, 'aliases': self.aliases, 'init_date': self.init_date,
|
'en_wikipedia_link': self.en_wikipedia_link, 'db_aliases': self.db_aliases,
|
||||||
'end_date': self.end_date}
|
'aliases': self.aliases, 'init_date': self.init_date, 'end_date': self.end_date}
|
||||||
artist = Artist.de_json(json_dict, client)
|
artist = Artist.de_json(json_dict, client)
|
||||||
|
|
||||||
assert artist.id == self.id
|
assert artist.id == self.id
|
||||||
|
assert artist.error == self.error
|
||||||
assert artist.name == self.name
|
assert artist.name == self.name
|
||||||
assert artist.various == self.various
|
assert artist.various == self.various
|
||||||
assert artist.composer == self.composer
|
assert artist.composer == self.composer
|
||||||
|
@ -103,9 +104,9 @@ class TestArtist:
|
||||||
assert artist.end_date == self.end_date
|
assert artist.end_date == self.end_date
|
||||||
|
|
||||||
def test_equality(self, cover):
|
def test_equality(self, cover):
|
||||||
a = Artist(self.id, self.name, cover)
|
a = Artist(self.id)
|
||||||
b = Artist(self.id, '', None)
|
b = Artist(10)
|
||||||
c = Artist(self.id, self.name, cover)
|
c = Artist(self.id)
|
||||||
|
|
||||||
assert a != b
|
assert a != b
|
||||||
assert hash(a) != hash(b)
|
assert hash(a) != hash(b)
|
||||||
|
|
|
@ -21,8 +21,9 @@ class Artist(YandexMusicObject):
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
id_: int,
|
id_: int,
|
||||||
name: str,
|
error: Optional[str] = None,
|
||||||
cover: Optional['Cover'],
|
name: Optional[str] = None,
|
||||||
|
cover: Optional['Cover'] = None,
|
||||||
various: Optional[bool] = None,
|
various: Optional[bool] = None,
|
||||||
composer=None,
|
composer=None,
|
||||||
genres=None,
|
genres=None,
|
||||||
|
@ -48,9 +49,10 @@ class Artist(YandexMusicObject):
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
self.id = id_
|
self.id = id_
|
||||||
|
|
||||||
|
self.error = error
|
||||||
self.name = name
|
self.name = name
|
||||||
self.cover = cover
|
self.cover = cover
|
||||||
|
|
||||||
self.various = various
|
self.various = various
|
||||||
self.composer = composer
|
self.composer = composer
|
||||||
self.genres = genres
|
self.genres = genres
|
||||||
|
|
|
@ -10,15 +10,15 @@ class Ratings(YandexMusicObject):
|
||||||
"""Класс, представляющий рейтинг исполнителя.
|
"""Класс, представляющий рейтинг исполнителя.
|
||||||
|
|
||||||
Attributes:
|
Attributes:
|
||||||
week (:obj:`int`): Значение еженедельного рейтинга.
|
|
||||||
month (:obj:`int`): Значение ежемесячного рейтинга.
|
month (:obj:`int`): Значение ежемесячного рейтинга.
|
||||||
|
week (:obj:`int`): Значение еженедельного рейтинга.
|
||||||
day (:obj:`int`): Значение дневного рейтинга.
|
day (:obj:`int`): Значение дневного рейтинга.
|
||||||
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client`, представляющий клиент
|
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client`, представляющий клиент
|
||||||
Yandex Music.
|
Yandex Music.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
week (:obj:`int`): Значение еженедельного рейтинга.
|
|
||||||
month (:obj:`int`): Значение ежемесячного рейтинга.
|
month (:obj:`int`): Значение ежемесячного рейтинга.
|
||||||
|
week (:obj:`int`, optional): Значение еженедельного рейтинга.
|
||||||
day (:obj:`int`, optional): Значение дневного рейтинга.
|
day (:obj:`int`, optional): Значение дневного рейтинга.
|
||||||
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client`, представляющий клиент
|
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client`, представляющий клиент
|
||||||
Yandex Music.
|
Yandex Music.
|
||||||
|
@ -26,8 +26,8 @@ class Ratings(YandexMusicObject):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
week: int,
|
|
||||||
month: int,
|
month: int,
|
||||||
|
week: Optional[int] = None,
|
||||||
day: Optional[int] = None,
|
day: Optional[int] = None,
|
||||||
client: Optional['Client'] = None,
|
client: Optional['Client'] = None,
|
||||||
**kwargs) -> None:
|
**kwargs) -> None:
|
||||||
|
|
読み込み中…
新しいイシューから参照