__copyright__ = 'Copyright (c) 2020 Kristóf Marussy ' __license__ = 'GNU GPLv2' import unittest from beancount.loader import load_doc from beancount.parser import cmptest class DefaultToleranceTest(cmptest.TestCase): @load_doc() def test_account_with_tolerance(self, entries, errors, options_map): ''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking default-balance-tolerance: 10 2020-01-01 balance Assets:Checking 0 USD ''' self.assertEqualEntries(''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking default-balance-tolerance: 10 2020-01-01 balance Assets:Checking 0 ~ 10 USD ''', entries) @load_doc() def test_account_with_tolerance_override(self, entries, errors, options_map): ''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking default-balance-tolerance: 10 2020-01-01 balance Assets:Checking 10 ~ 20 USD ''' self.assertEqualEntries(''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking default-balance-tolerance: 10 2020-01-01 balance Assets:Checking 10 ~ 20 USD ''', entries) @load_doc() def test_account_with_tolerance_override_zero(self, entries, errors, options_map): ''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking default-balance-tolerance: 10 2020-01-01 balance Assets:Checking 0 ~ 0 USD ''' self.assertEqualEntries(''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking default-balance-tolerance: 10 2020-01-01 balance Assets:Checking 0 ~ 0 USD ''', entries) @load_doc() def test_account_without_tolerance(self, entries, errors, options_map): ''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking 2020-01-01 balance Assets:Checking 0 USD 2020-01-02 balance Assets:Checking 10 ~ 20 USD ''' self.assertEqualEntries(''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking 2020-01-01 balance Assets:Checking 0 USD 2020-01-02 balance Assets:Checking 10 ~ 20 USD ''', entries) @load_doc(expect_errors=True) def test_account_with_invalid_tolerance(self, entries, errors, options_map): ''' plugin "beancount_extras_kris7t.plugins.default_tolerance" 2020-01-01 open Assets:Checking default-balance-tolerance: TRUE 2020-01-01 balance Assets:Checking 0 USD ''' self.assertRegex(errors[0].message, '^default-balance-tolerance must be decimal') if __name__ == '__main__': unittest.main()