Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cli for description #259

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 40 additions & 1 deletion tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ def test_list(tmpdir, runner, create):
result = runner.invoke(cli, ['list'], catch_exceptions=False)
assert not result.exception
assert not result.output.strip()

create(
'test.ics',
'SUMMARY:harhar\n'
Expand Down Expand Up @@ -911,3 +910,43 @@ def test_duplicate_list(tmpdir, runner):
assert result.exit_code == exceptions.AlreadyExists.EXIT_CODE
assert result.output.strip() == \
'More than one list has the same identity: personal.'


def test_show_description(tmpdir, runner, create):
create(
'test.ics',
'SUMMARY:harhar\n'
'DESCRIPTION:Parnidi\n'
)

result = runner.invoke(cli, ['show', '1'])
assert 'Parnidi' in result.output


def test_description(runner):
result = runner.invoke(cli, [
'new', '-l', 'default', '--description', 'Takshila', 'Event Test'
])

assert 'Takshila' in result.output


def test_edit_description(runner, todos, todo_factory):
todo_factory(summary='harhar', description='Parnidi')

result = runner.invoke(cli, ['edit', '1', '--description', 'Kimple'])

assert not result.exception
assert 'Kimple' in result.output


def test_filter_description(runner, create, todos, todo_factory):
todo_factory(summary='harhar', description='Takshila')
create(
'test.ics',
'SUMMARY:manika\n'
'DESCRIPTION:Shubik'
)
result = runner.invoke(cli, ['list'])

assert 'Shubik' in result.output
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, assert that the other todo is not in result.output. You'll want to give them different summaries to tell them apart.

6 changes: 5 additions & 1 deletion todoman/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ def _todo_property_options(command):
click.option(
'--priority', default='', callback=_validate_priority_param,
help=('The priority for this todo'))(command)
click.option('--description', help=('The description of todo.'))(command)
click.option('--location', help=('The location where '
'this todo takes place.'))(command)
click.option(
Expand All @@ -156,7 +157,8 @@ def _todo_property_options(command):
@functools.wraps(command)
def command_wrap(*a, **kw):
kw['todo_properties'] = {key: kw.pop(key) for key in
('due', 'start', 'location', 'priority')}
('due', 'start', 'location', 'priority',
'description')}
return command(*a, **kw)

return command_wrap
Expand Down Expand Up @@ -466,6 +468,8 @@ def move(ctx, list, ids):
@cli.command()
@pass_ctx
@click.argument('lists', nargs=-1, callback=_validate_lists_param)
@click.option('--description',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since you deleted the implementation for this flag, the flag should be removed too.

Note that that implementation was not wrong; just missing tests though.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really don't understand which tests are missing.
And if I remove the flag then also it works correctly then why that implementation was not wrong.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This flag was used here. By deleting that bit of code, this flag is now unused and ignored.

My initial comment on that related bit of code was that there were no tests for it (though the code itself seemed fine). Basically, that would be a test that uses runner with 'list', '--description'.

You can either remove the flag (now unused), or undelete that code and add tests for it (I'm very much prefer the latter, of course. 🙂 ).

help='Only show tasks with description containg TEXT')
@click.option('--location', help='Only show tasks with location containg TEXT')
@click.option('--category', help='Only show tasks with category containg TEXT')
@click.option('--grep', help='Only show tasks with message containg TEXT')
Expand Down
8 changes: 7 additions & 1 deletion todoman/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,8 @@ def add_vtodo(self, todo, file_path, id=None):

return rv

def todos(self, lists=(), priority=None, location='', category='', grep='',
def todos(self, lists=(), priority=None, location='',
description='', category='', grep='',
sort=(), reverse=True, due=None, start=None, startable=False,
status=('NEEDS-ACTION', 'IN-PROCESS',)):
"""
Expand All @@ -617,6 +618,8 @@ def todos(self, lists=(), priority=None, location='', category='', grep='',
-created_at

:param list lists: Only return todos for these lists.
:param str description: Only return todos with a description
containing this string.
:param str location: Only return todos with a location containing this
string.
:param str category: Only return todos with a category containing this
Expand Down Expand Up @@ -652,6 +655,9 @@ def todos(self, lists=(), priority=None, location='', category='', grep='',
if priority:
extra_where.append('AND PRIORITY > 0 AND PRIORITY <= ?')
params.append('{}'.format(priority))
if description:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, also, no tests seem to cover this new filter.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I think this filter does not do anything. so, I remove it.

extra_where.append('AND description LIKE ?')
params.append('%{}%'.format(description))
if location:
extra_where.append('AND location LIKE ?')
params.append('%{}%'.format(location))
Expand Down