def de_json(cls, data: dict, client: 'Client') -> Optional['Search']: """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`, optional): Клиент Yandex Music. Returns: :obj:`yandex_music.Search`: Результаты поиска. """ if not data: return None data = super(Search, cls).de_json(data, client) from yandex_music import SearchResult, Best data['best'] = Best.de_json(data.get('best'), client) data['albums'] = SearchResult.de_json(data.get('albums'), client, 'album') data['artists'] = SearchResult.de_json(data.get('artists'), client, 'artist') data['playlists'] = SearchResult.de_json(data.get('playlists'), client, 'playlist') data['tracks'] = SearchResult.de_json(data.get('tracks'), client, 'track') data['videos'] = SearchResult.de_json(data.get('videos'), client, 'video') return cls(client=client, **data)
def test_equality(self, result_with_type): result, type_ = result_with_type a = SearchResult(type_, self.total, self.per_page, self.order, [result]) b = SearchResult(type_, 10, self.per_page, 1, [result]) c = SearchResult(type_, self.total, self.per_page, self.order, [result]) assert a != b assert hash(a) != hash(b) assert a is not b assert a == c
def de_json(cls, data, client): if not data: return None data = super(Search, cls).de_json(data, client) from yandex_music import SearchResult, Best data['best'] = Best.de_json(data.get('best'), client) data['albums'] = SearchResult.de_json(data.get('albums'), client, 'album') data['artists'] = SearchResult.de_json(data.get('artists'), client, 'artist') data['playlists'] = SearchResult.de_json(data.get('playlists'), client, 'playlist') data['tracks'] = SearchResult.de_json(data.get('tracks'), client, 'track') data['videos'] = SearchResult.de_json(data.get('videos'), client, 'video') return cls(client=client, **data)
def test_de_json_all(self, client, result_with_type): result, type = result_with_type json_dict = {'total': self.total, 'per_page': self.per_page, 'order': self.order, 'results': [result.to_dict()]} search_result = SearchResult.de_json(json_dict, client, type) assert search_result.total == self.total assert search_result.per_page == self.per_page assert search_result.order == self.order assert search_result.results == [result]
def search_result_with_results_and_type(request, types, results): return ( SearchResult( types[request.param], TestSearchResult.total, TestSearchResult.per_page, TestSearchResult.order, [results[request.param]], ), [results[request.param]], types[request.param], )
def de_json(cls, data, client): """Десериализация объекта. Args: data (:obj:`dict`): Поля и значения десериализуемого объекта. client (:obj:`yandex_music.Client`): Объект класса :class:`yandex_music.Client` представляющий клиент Yandex Music. Returns: :obj:`yandex_music.Search`: Объект класса :class:`yandex_music.Search`. """ if not data: return None data = super(Search, cls).de_json(data, client) from yandex_music import SearchResult, Best data['best'] = Best.de_json(data.get('best'), client) data['albums'] = SearchResult.de_json(data.get('albums'), client, 'album') data['artists'] = SearchResult.de_json(data.get('artists'), client, 'artist') data['playlists'] = SearchResult.de_json(data.get('playlists'), client, 'playlist') data['tracks'] = SearchResult.de_json(data.get('tracks'), client, 'track') data['videos'] = SearchResult.de_json(data.get('videos'), client, 'video') return cls(client=client, **data)
def test_de_json_none(self, client): assert SearchResult.de_json({}, client) is None
def make_search_result(param): return SearchResult(types[param], TestSearchResult.total, TestSearchResult.per_page, TestSearchResult.order, [results[param]])
def search_result_with_results(request, results): return SearchResult(TestSearchResult.total, TestSearchResult.per_page, TestSearchResult.order, [results[request.param]]), [results[request.param]]