コード例 #1
0
    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)
コード例 #2
0
    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
コード例 #3
0
    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)
コード例 #4
0
    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]
コード例 #5
0
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],
    )
コード例 #6
0
    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)
コード例 #7
0
 def test_de_json_none(self, client):
     assert SearchResult.de_json({}, client) is None
コード例 #8
0
 def make_search_result(param):
     return SearchResult(types[param], TestSearchResult.total,
                         TestSearchResult.per_page, TestSearchResult.order,
                         [results[param]])
コード例 #9
0
def search_result_with_results(request, results):
    return SearchResult(TestSearchResult.total, TestSearchResult.per_page,
                        TestSearchResult.order,
                        [results[request.param]]), [results[request.param]]