Exemple #1
0
def test_parse_date_relative(expect_start: str, expect_end: str,
                             text: str) -> None:
    start, end = _to_date(expect_start), _to_date(expect_end)
    with mock.patch("fava.util.date.datetime.date") as mock_date:
        mock_date.today.return_value = _to_date("2016-06-24")
        mock_date.side_effect = date
        assert parse_date(text, FiscalYearEnd(6, 30)) == (start, end)
Exemple #2
0
def test_parse_date():
    today = date.today()
    tests = {
        'year to date': (date(today.year, 1, 1), today + timedelta(1)),
        '    ': (None, None),
        'today': (today, today + timedelta(1)),
        'YESTERDAY': (today - timedelta(1), today),
        'october 2010       ': daterange(2010, 10),
        '2000': daterange(2000),
        '1st february 2008': daterange(2008, 2, 1),
        '2010-10': daterange(2010, 10),
        '2000-01-03': daterange(2000, 1, 3),
        'this year': daterange(today.year),
        'august next year': daterange(today.year + 1, 8),
        'this month': daterange(today.year, today.month),
        'this december': daterange(today.year, 12),
        'this november': daterange(today.year, 11),
        '2nd aug, 2010': daterange(2010, 8, 2),
        'august 3rd, 2012': daterange(2012, 8, 3),
        '2015-W01': (date(2015, 1, 5), date(2015, 1, 12)),
        '2015-Q2': (date(2015, 4, 1), date(2015, 7, 1)),
        '2014 to 2015': (daterange(2014)[0], daterange(2015)[1]),
        '2011-10 - 2015': (daterange(2011, 10)[0], daterange(2015)[1]),
    }
    for test, result in tests.items():
        assert parse_date(test) == result
Exemple #3
0
def test_parse_date():
    today = date.today()
    tests = {
        'year to date': (date(today.year, 1, 1), today + timedelta(1)),
        '    ': (None, None),
        'today': (today, today + timedelta(1)),
        'YESTERDAY': (today - timedelta(1), today),
        'october 2010       ': daterange(2010, 10),
        '2000': daterange(2000),
        '1st february 2008': daterange(2008, 2, 1),
        '2010-10': daterange(2010, 10),
        '2000-01-03': daterange(2000, 1, 3),
        'this year': daterange(today.year),
        'august next year': daterange(today.year + 1, 8),
        'this month': daterange(today.year, today.month),
        'this december': daterange(today.year, 12),
        'this november': daterange(today.year, 11),
        '2nd aug, 2010': daterange(2010, 8, 2),
        'august 3rd, 2012': daterange(2012, 8, 3),
        '2015-W01': (date(2015, 1, 5), date(2015, 1, 12)),
        '2015-Q2': (date(2015, 4, 1), date(2015, 7, 1)),
        '2014 to 2015': (daterange(2014)[0], daterange(2015)[1]),
        '2011-10 - 2015': (daterange(2011, 10)[0], daterange(2015)[1]),
    }
    for test, result in tests.items():
        assert parse_date(test) == result
Exemple #4
0
    def set(self, value):
        if value == self.value:
            return False
        self.value = value
        if not self.value:
            return True

        self.begin_date, self.end_date = parse_date(self.value)
        if not self.begin_date:
            raise FilterException(
                'time', 'Failed to parse date: {}'.format(self.value))
        return True
Exemple #5
0
 def set(self, value):
     if value == self.value:
         return False
     self.value = value
     if not self.value:
         return True
     try:
         self.begin_date, self.end_date = parse_date(self.value)
     except TypeError:
         raise FilterException('Failed to parse date: {}'
                               .format(self.value))
     return True
def test_parse_date(pseudo_today, expect_start, expect_end, text):
    """Test for parse_date() function."""
    # Mock the imported datetime.date in fava.util.date module
    # Ref:
    # http://www.voidspace.org.uk/python/mock/examples.html#partial-mocking
    with mock.patch('fava.util.date.datetime.date') as mock_date:
        mock_date.today.return_value = to_date(pseudo_today) or date.today()
        mock_date.side_effect = date
        got = parse_date(text)
    start, end = to_date(expect_start), to_date(expect_end)
    assert got == (start, end), "parse_date(%s) == %s @ %s, want (%s, %s)" % (
        text, got, pseudo_today, start, end)
Exemple #7
0
    def set(self, value: Optional[str]) -> bool:
        if value == self.value:
            return False
        self.value = value
        if not self.value:
            return True

        self.begin_date, self.end_date = parse_date(
            self.value, self.fava_options["fiscal-year-end"])
        if not self.begin_date:
            self.value = None
            raise FilterException("time", f"Failed to parse date: {value}")
        return True
Exemple #8
0
    def set(self, value: str | None) -> bool:
        if value == self.value:
            return False
        self.value = value
        if not self.value:
            return True

        self.begin_date, self.end_date = parse_date(
            self.value, self.fava_options.fiscal_year_end)
        if not self.begin_date:
            self.value = None
            raise FilterException("time", f"Failed to parse date: {value}")
        return True
Exemple #9
0
    def set(self, value):
        if value == self.value:
            return False
        self.value = value
        if not self.value:
            return True

        self.begin_date, self.end_date = parse_date(
            self.value, self.fava_options['fiscal-year-end'])
        if not self.begin_date:
            self.value = None
            raise FilterException('time',
                                  'Failed to parse date: {}'.format(value))
        return True
Exemple #10
0
    def set(self, value):
        if value == self.value:
            return False
        self.value = value
        if not self.value:
            return True

        self.begin_date, self.end_date = parse_date(
            self.value,
            self.fava_options['fiscal-year-end']
        )
        if not self.begin_date:
            self.value = None
            raise FilterException('time',
                                  'Failed to parse date: {}'.format(value))
        return True
Exemple #11
0
def deserialise(json_entry: Any) -> Directive:
    """Parse JSON to a Beancount entry.

    Args:
        json_entry: The entry.

    Raises:
        KeyError: if one of the required entry fields is missing.
        FavaAPIException: if the type of the given entry is not supported.
    """
    date = parse_date(json_entry.get("date", ""))[0]
    if not isinstance(date, datetime.date):
        raise FavaAPIException("Invalid entry date.")
    if json_entry["type"] == "Transaction":
        narration, tags, links = extract_tags_links(json_entry["narration"])
        postings = [deserialise_posting(pos) for pos in json_entry["postings"]]
        return Transaction(
            json_entry["meta"],
            date,
            json_entry.get("flag", ""),
            json_entry.get("payee", ""),
            narration or "",
            tags,
            links,
            postings,
        )
    if json_entry["type"] == "Balance":
        raw_amount = json_entry["amount"]
        amount = Amount(D(str(raw_amount["number"])), raw_amount["currency"])

        return Balance(json_entry["meta"], date, json_entry["account"], amount,
                       None, None)
    if json_entry["type"] == "Note":
        comment = json_entry["comment"].replace('"', "")
        return Note(json_entry["meta"], date, json_entry["account"], comment)
    raise FavaAPIException("Unsupported entry type.")
Exemple #12
0
def test_parse_date_relative(expect_start, expect_end, text):
    start, end = _to_date(expect_start), _to_date(expect_end)
    with mock.patch("fava.util.date.datetime.date") as mock_date:
        mock_date.today.return_value = _to_date("2016-06-24")
        mock_date.side_effect = date
        assert parse_date(text, "06-30") == (start, end)
Exemple #13
0
def test_parse_date(expect_start: str, expect_end: str, text: str) -> None:
    expected = (_to_date(expect_start), _to_date(expect_end))
    assert parse_date(text, FiscalYearEnd(6, 30)) == expected
    if "FY" not in text:
        assert parse_date(text, None) == expected
Exemple #14
0
def test_parse_date_empty() -> None:
    assert parse_date("     ", FiscalYearEnd(6, 30)) == (None, None)
    assert parse_date("     ", None) == (None, None)
Exemple #15
0
def test_parse_date(expect_start, expect_end, text):
    start, end = _to_date(expect_start), _to_date(expect_end)
    assert parse_date(text) == (start, end)
Exemple #16
0
def test_parse_date_relative(expect_start, expect_end, text):
    start, end = _to_date(expect_start), _to_date(expect_end)
    with mock.patch('fava.util.date.datetime.date') as mock_date:
        mock_date.today.return_value = _to_date('2016-06-24')
        mock_date.side_effect = date
        assert parse_date(text, "06-30") == (start, end)
Exemple #17
0
def test_parse_date(expect_start, expect_end, text):
    start, end = _to_date(expect_start), _to_date(expect_end)
    assert parse_date(text) == (start, end)