def test_filename_uid_colision(create, default_database, runner, todos): create('ABC.ics', 'SUMMARY:My UID is not ABC\n' 'UID:NOTABC\n') len(list(todos())) == 1 todo = Todo(new=False) todo.uid = 'ABC' todo.list = next(default_database.lists()) default_database.save(todo) len(list(todos())) == 2
def test_filename_uid_colision(create, default_database, runner, todos): create("ABC.ics", "SUMMARY:My UID is not ABC\nUID:NOTABC\n") assert len(list(todos())) == 1 todo = Todo(new=False) todo.uid = "ABC" todo.list = next(default_database.lists()) default_database.save(todo) assert len(list(todos())) == 2
def test_edit(runner, default_database, todos): todo = Todo(new=True) todo.list = next(default_database.lists()) todo.summary = 'Eat paint' todo.due = datetime.datetime(2016, 10, 3) default_database.save(todo) result = runner.invoke(cli, ['edit', '1', '--due', '2017-02-01']) assert not result.exception assert '2017-02-01' in result.output todo = next(todos(status='ANY')) assert todo.due == datetime.datetime(2017, 2, 1, tzinfo=tzlocal()) assert todo.summary == 'Eat paint'
def test_edit(runner, default_database, todos): todo = Todo(new=True) todo.list = next(default_database.lists()) todo.summary = "Eat paint" todo.due = datetime.datetime(2016, 10, 3) default_database.save(todo) result = runner.invoke(cli, ["edit", "1", "--due", "2017-02-01"]) assert not result.exception assert "2017-02-01" in result.output todo = next(todos(status="ANY")) assert todo.due == datetime.datetime(2017, 2, 1, tzinfo=tzlocal()) assert todo.summary == "Eat paint"
def test_sorting_fields(tmpdir, runner, default_database): tasks = [] for i in range(1, 10): days = datetime.timedelta(days=i) todo = Todo(new=True) todo.list = next(default_database.lists()) todo.due = datetime.datetime.now() + days todo.created_at = datetime.datetime.now() - days todo.summary = 'harhar{}'.format(i) tasks.append(todo) default_database.save(todo) fields = ( 'id', 'uid', 'summary', 'due', 'priority', 'created_at', 'completed_at', 'dtstamp', 'status', 'description', 'location', 'categories', ) @given( sort_key=st.lists( st.sampled_from(fields + tuple('-' + x for x in fields)), unique=True ) ) def run_test(sort_key): sort_key = ','.join(sort_key) result = runner.invoke(cli, ['list', '--sort', sort_key]) assert not result.exception assert result.exit_code == 0 assert len(result.output.strip().splitlines()) == len(tasks) run_test()
def test_due_aware(tmpdir, runner, create, now_for_tz): db = Database([tmpdir.join('default')], tmpdir.join('cache.sqlite')) l = next(db.lists()) for tz in ['CET', 'HST']: for i in [1, 23, 25, 48]: todo = Todo(new=True) todo.due = now_for_tz(tz) + timedelta(hours=i) todo.summary = '{}'.format(i) todo.list = l db.save(todo) todos = list(db.todos(due=24)) assert len(todos) == 4 assert todos[0].summary == "23" assert todos[1].summary == "23" assert todos[2].summary == "1" assert todos[3].summary == "1"
def test_sorting_fields(tmpdir, runner, default_database): tasks = [] for i in range(1, 10): days = datetime.timedelta(days=i) todo = Todo(new=True) todo.list = next(default_database.lists()) todo.due = datetime.datetime.now() + days todo.created_at = datetime.datetime.now() - days todo.summary = "harhar{}".format(i) tasks.append(todo) default_database.save(todo) fields = ( "id", "uid", "summary", "due", "priority", "created_at", "completed_at", "dtstamp", "status", "description", "location", "categories", ) @given(sort_key=st.lists(st.sampled_from(fields + tuple("-" + x for x in fields)), unique=True)) def run_test(sort_key): sort_key = ",".join(sort_key) result = runner.invoke(cli, ["list", "--sort", sort_key]) assert not result.exception assert result.exit_code == 0 assert len(result.output.strip().splitlines()) == len(tasks) run_test()