def test_parse_extracts_description_without_quotes(faker: Faker) -> None: """Test description extraction.""" description = faker.sentence() task_arguments = description.split(" ") result = _parse_changes(task_arguments) assert result.task_attributes == {"description": description}
def test_parse_extracts_tags_to_remove(faker: Faker) -> None: """Test the parsing of tags to remove.""" description = faker.sentence() tags = [faker.word(), faker.word()] task_arguments = [ description, f"-{tags[0]}", f"-{tags[1]}", ] result = _parse_changes(task_arguments) assert result.task_attributes == {"description": description} assert result.tags_to_remove == tags
def test_parse_extracts_integer_properties(faker: Faker, string: str, attribute: str) -> None: """Test parsing of properties that are integers.""" description = faker.sentence() value = faker.random_number() task_arguments = [ description, f"{string}:{value}", ] result = _parse_changes(task_arguments) assert result.task_attributes == { "description": description, attribute: value }
def test_parse_extracts_due(faker: Faker, freezer: FrozenDateTimeFactory) -> None: """Test parsing of due dates.""" description = faker.sentence() freezer.move_to("2017-05-20") due = "1d" task_arguments = [ description, f"due:{due}", ] result = _parse_changes(task_arguments) assert result.task_attributes == { "description": description, "due": datetime(2017, 5, 21), }
def test_parse_extracts_recurring_in_long_representation( faker: Faker, string: str, attribute: str, recurrence_type: str) -> None: """Test parsing of recurrent tasks.""" description = faker.sentence() recurring = faker.word() task_arguments = [ description, f"{string}:{recurring}", ] result = _parse_changes(task_arguments) assert result.task_attributes == { "description": description, "recurrence_type": recurrence_type, "recurrence": recurring, }
def test_parse_return_none_if_argument_is_empty() -> None: """Test that the attributes can be set to None. One of each type (str, date, float, int) and the description empty tags are tested separately. """ task_arguments = [ "", "area:", "due:", "estimate:", "fun:", ] result = _parse_changes(task_arguments) assert result.task_attributes == { "description": "", "area": None, "due": None, "estimate": None, "fun": None, }
def test_parse_allows_empty_description() -> None: """Test empty description extraction.""" result = _parse_changes([""]) assert result.task_attributes == {"description": ""}