Исправлена десериализация несуществующего исполнителя.

Поле week у класса Ratings теперь опциональное.
このコミットが含まれているのは:
Il`ya 2020-02-01 14:34:22 +03:00
コミット 35e6d2d8f9
4個のファイルの変更33行の追加29行の削除

ファイルの表示

@ -22,12 +22,13 @@ from . import TestCounts, TestTrackId, TestCaseForms, TestRatings, TestIcon, Tes
def artist_factory(cover, counts, ratings, link, description):
class ArtistFactory:
def get(self, popular_tracks):
return Artist(TestArtist.id, TestArtist.name, cover, TestArtist.various, TestArtist.composer,
TestArtist.genres, TestArtist.op_image, TestArtist.no_pictures_from_search, counts,
TestArtist.available, ratings, [link], TestArtist.tickets_available, TestArtist.likes_count,
popular_tracks, TestArtist.regions, TestArtist.decomposed, TestArtist.full_names, description,
TestArtist.countries, TestArtist.en_wikipedia_link, TestArtist.db_aliases, TestArtist.aliases,
TestArtist.init_date, TestArtist.end_date)
return Artist(TestArtist.id, TestArtist.error, TestArtist.name, cover, TestArtist.various,
TestArtist.composer, TestArtist.genres, TestArtist.op_image,
TestArtist.no_pictures_from_search, counts, TestArtist.available, ratings, [link],
TestArtist.tickets_available, TestArtist.likes_count, popular_tracks, TestArtist.regions,
TestArtist.decomposed, TestArtist.full_names, description, TestArtist.countries,
TestArtist.en_wikipedia_link, TestArtist.db_aliases, TestArtist.aliases, TestArtist.init_date,
TestArtist.end_date)
return ArtistFactory()
@ -242,7 +243,7 @@ def video_supplement():
@pytest.fixture(scope='session')
def ratings():
return Ratings(TestRatings.week, TestRatings.month, TestRatings.day)
return Ratings(TestRatings.month, TestRatings.week, TestRatings.day)
@pytest.fixture(scope='session')

ファイルの表示

@ -3,6 +3,7 @@ from yandex_music import Artist
class TestArtist:
id = 10987
error = 'not-found'
name = 'Elvis Presley'
various = False
composer = None
@ -24,6 +25,7 @@ class TestArtist:
def test_expected_values(self, artist, cover, counts, ratings, link, track_without_artists_and_albums, description):
assert artist.id == self.id
assert artist.error == self.error
assert artist.name == self.name
assert artist.various == self.various
assert artist.composer == self.composer
@ -56,27 +58,26 @@ class TestArtist:
assert Artist.de_list({}, client) == []
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)
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):
json_dict = {'id_': self.id, 'name': self.name, 'various': self.various, 'composer': self.composer,
'cover': cover.to_dict(), 'genres': self.genres, 'op_image': self.op_image,
'no_pictures_from_search': self.no_pictures_from_search, 'counts': counts.to_dict(),
'available': self.available, 'ratings': ratings.to_dict(), 'links': [link.to_dict()],
'tickets_available': self.tickets_available, 'likes_count': self.likes_count,
'popular_tracks': [track_without_artists.to_dict()], 'regions': self.regions,
'decomposed': self.decomposed, 'full_names': self.full_names, 'description': description.to_dict(),
'countries': self.countries, 'en_wikipedia_link': self.en_wikipedia_link,
'db_aliases': self.db_aliases, 'aliases': self.aliases, 'init_date': self.init_date,
'end_date': self.end_date}
json_dict = {'id_': self.id, 'error': self.error, 'name': self.name, 'various': self.various,
'composer': self.composer, 'cover': cover.to_dict(), 'genres': self.genres,
'op_image': self.op_image, 'no_pictures_from_search': self.no_pictures_from_search,
'counts': counts.to_dict(), 'available': self.available, 'ratings': ratings.to_dict(),
'links': [link.to_dict()], 'tickets_available': self.tickets_available,
'likes_count': self.likes_count, 'popular_tracks': [track_without_artists.to_dict()],
'regions': self.regions, 'decomposed': self.decomposed, 'full_names': self.full_names,
'description': description.to_dict(), 'countries': self.countries,
'en_wikipedia_link': self.en_wikipedia_link, 'db_aliases': self.db_aliases,
'aliases': self.aliases, 'init_date': self.init_date, 'end_date': self.end_date}
artist = Artist.de_json(json_dict, client)
assert artist.id == self.id
assert artist.error == self.error
assert artist.name == self.name
assert artist.various == self.various
assert artist.composer == self.composer
@ -103,9 +104,9 @@ class TestArtist:
assert artist.end_date == self.end_date
def test_equality(self, cover):
a = Artist(self.id, self.name, cover)
b = Artist(self.id, '', None)
c = Artist(self.id, self.name, cover)
a = Artist(self.id)
b = Artist(10)
c = Artist(self.id)
assert a != b
assert hash(a) != hash(b)

ファイルの表示

@ -21,8 +21,9 @@ class Artist(YandexMusicObject):
def __init__(self,
id_: int,
name: str,
cover: Optional['Cover'],
error: Optional[str] = None,
name: Optional[str] = None,
cover: Optional['Cover'] = None,
various: Optional[bool] = None,
composer=None,
genres=None,
@ -48,9 +49,10 @@ class Artist(YandexMusicObject):
client: Optional['Client'] = None,
**kwargs) -> None:
self.id = id_
self.error = error
self.name = name
self.cover = cover
self.various = various
self.composer = composer
self.genres = genres

ファイルの表示

@ -10,15 +10,15 @@ class Ratings(YandexMusicObject):
"""Класс, представляющий рейтинг исполнителя.
Attributes:
week (:obj:`int`): Значение еженедельного рейтинга.
month (:obj:`int`): Значение ежемесячного рейтинга.
week (:obj:`int`): Значение еженедельного рейтинга.
day (:obj:`int`): Значение дневного рейтинга.
client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client`, представляющий клиент
Yandex Music.
Args:
week (:obj:`int`): Значение еженедельного рейтинга.
month (:obj:`int`): Значение ежемесячного рейтинга.
week (:obj:`int`, optional): Значение еженедельного рейтинга.
day (:obj:`int`, optional): Значение дневного рейтинга.
client (:obj:`yandex_music.Client`, optional): Объект класса :class:`yandex_music.Client`, представляющий клиент
Yandex Music.
@ -26,8 +26,8 @@ class Ratings(YandexMusicObject):
"""
def __init__(self,
week: int,
month: int,
week: Optional[int] = None,
day: Optional[int] = None,
client: Optional['Client'] = None,
**kwargs) -> None: