def test_tagged_and_annotated_entry(self, monkeypatch):
        def list_entries(self):
            text = '''
            { "_embedded": { "items": [
                { "id": 2, "title": "title", "content": "content",
                "url": "url", "is_archived": 0, "is_starred": 1},
                { "id": 1, "title": "title", "content": "content",
                "url": "url", "is_archived": 0, "is_starred": 1,
                "annotations": [{
                    "user": "******", "annotator_schema_version":
                    "v1.0", "id": 1, "text": "content",
                    "created_at": "2020-10-28T10:50:51+0000",
                    "updated_at": "2020-10-28T10:50:51+0000",
                    "quote": "quote", "ranges":
                    [{"start": "/div[1]/p[1]", "startOffset": "23",
                    "end": "/div[1]/p[1]", "endOffset": "49"}]}],
                "tags": [
                        {"id":7,"label":"tag","slug":"tag"},
                        {"id":13,"label":"tag2","slug":"tag2"}]}
                ]}}
            '''
            return Response(200, text)

        monkeypatch.setattr(GetListEntries, 'request', list_entries)

        command = ListCommand(self.config)
        result, entries = command.execute()
        assert result
        assert entries == tabulate([[2, '', 'title'],
                                    [
                                        1, '',
                                        (f'title {Fore.BLUE}{Fore.RESET} '
                                         f'{Fore.BLUE}{Fore.RESET}')
                                    ]])
    def test_empty_list(self, monkeypatch):
        def list_entries(self):
            text = '{ "_embedded": { "items": [] } }'
            return Response(200, text)

        monkeypatch.setattr(GetListEntries, 'request', list_entries)

        command = ListCommand(self.config)
        result, entries = command.execute()
        assert result
        assert not entries
    def test_list(self, monkeypatch):
        def list_entries(self):
            text = '''
            { "_embedded": { "items": [
                { "id": 1, "title": "title", "content": "content",
                "url": "url", "is_archived": 0, "is_starred": 1},
                { "id": 2, "title": "title", "content": "content",
                "url": "url", "is_archived": 0, "is_starred": 1}
            ] } }
            '''
            return Response(200, text)

        monkeypatch.setattr(GetListEntries, 'request', list_entries)

        command = ListCommand(self.config)
        result, entries = command.execute()
        assert result
        assert len(entries.split('\n')) == 4
    def test_tagged_entry(self, monkeypatch):
        def list_entries(self):
            text = '''
            { "_embedded": { "items": [
                { "id": 2, "title": "title", "content": "content",
                "url": "url", "is_archived": 0, "is_starred": 1},
                { "id": 1, "title": "title", "content": "content",
                "url": "url", "is_archived": 0, "is_starred": 1,
                "tags": [
                        {"id":7,"label":"tag","slug":"tag"},
                        {"id":13,"label":"tag2","slug":"tag2"}]}
                ]}}
            '''
            return Response(200, text)

        monkeypatch.setattr(GetListEntries, 'request', list_entries)

        command = ListCommand(self.config)
        result, entries = command.execute()
        assert result
        assert entries == tabulate(
            [[2, '', 'title'], [1, '', f'title {Fore.BLUE}{Fore.RESET}']])
Beispiel #5
0
def list(ctx, starred, read, all, oldest, trim_output, count, tags, quantity):
    """
    List the entries on the wallabag account.

    Gives a summary of entries in wallabag. Use options to filter the results.
    """
    config = ctx.obj
    if all:
        read = None
        starred = None

    params = ListParams(quantity, read, starred, oldest, trim_output, tags)
    run_command(
        CountCommand(config, params) if count else ListCommand(config, params))
    def test_entries_list(self, monkeypatch, values):
        def list_entries(self):
            text = '''
            { "_embedded": { "items": [
                {
                "id": 1,
                "title": "title",
                "content": "content",
                "url": "url",
                "is_archived": %s,
                "is_starred": %s
                }
            ] } }
            ''' % (values[0][0], values[0][1])
            return Response(200, text)

        monkeypatch.setattr(GetListEntries, 'request', list_entries)

        command = ListCommand(self.config)
        result, entries = command.execute()
        assert result
        assert entries
        assert entries == tabulate([values[1]])
    def test_tags_param(self, monkeypatch, tags):
        make_request_runned = False

        def _make_request(self, request):
            nonlocal make_request_runned
            make_request_runned = True
            assert GetListEntries.ApiParams.TAGS.value in request.api_params
            assert request.api_params[
                GetListEntries.ApiParams.TAGS.value].split(',') == tags[1]
            text = '{ "_embedded": { "items": [] } }'
            return Response(200, text)

        monkeypatch.setattr(GetListEntries, '_make_request', _make_request)
        monkeypatch.setattr(Api, '_get_authorization_header',
                            get_authorization_header)

        command = ListCommand(self.config, ListParams(tags=tags[0]))
        result, entries = command.execute()
        if tags[0]:
            assert make_request_runned
            assert result
        else:
            assert not make_request_runned
            assert not result