def test_ingest_file_import_info(): ingest_ledger = FavaLedger(FILE_PATH) importer = next(iter(ingest_ledger.ingest.importers.values())) assert importer info = file_import_info(EXAMPLE, importer) assert info.account == "Assets:Checking"
def test_report_page_globals() -> None: """Extensions can register reports.""" extension_report_ledger = FavaLedger( data_file("extension-report-example.beancount")) result = extension_report_ledger.extensions.reports assert result == [("PortfolioList", "Portfolio List")] extension_report_ledger.extensions.after_write_source("test", "test")
def load_file(): """Load Beancount files. """ for filepath in app.config['BEANCOUNT_FILES']: ledger = FavaLedger(filepath) slug = slugify(ledger.options['title']) if not slug: slug = slugify(filepath) app.config['LEDGERS'][slug] = ledger app.config['FILE_SLUGS'] = list(app.config['LEDGERS'].keys())
def _load_file() -> None: """Load Beancount files. This is run automatically on the first request. """ ledgers = [ FavaLedger(filepath) for filepath in app.config["BEANCOUNT_FILES"] ] update_ledger_slugs(ledgers)
def _load_file(): """Load Beancount files. This is run automatically on the first request. """ app.config["LEDGERS"] = {} for filepath in app.config["BEANCOUNT_FILES"]: ledger = FavaLedger(filepath) slug = slugify(ledger.options["title"]) if not slug: slug = slugify(filepath) app.config["LEDGERS"][slug] = ledger app.config["FILE_SLUGS"] = list(app.config["LEDGERS"].keys())
def _load_file(): """Load Beancount files. This is run automatically on the first request. """ app.config['LEDGERS'] = {} for filepath in app.config['BEANCOUNT_FILES']: ledger = FavaLedger(filepath) slug = slugify(ledger.options['title']) if not slug: slug = slugify(filepath) app.config['LEDGERS'][slug] = ledger # actually contains ledger instances, wtf is slug? app.config['FILE_SLUGS'] = list(app.config['LEDGERS'].keys())
def test_ingest_examplefile(): ingest_ledger = FavaLedger(FILE_PATH) entries = ingest_ledger.ingest.extract(EXAMPLE, "<run_path>.TestImporter") assert len(entries) == 4 assert entries[0].date == datetime.date(2017, 2, 12) assert entries[0].comment == "Hinweis: Zinssatz auf 0,15% geändert" assert entries[1].date == datetime.date(2017, 2, 13) assert (entries[1].narration == "Payment to Company XYZ REF: 31000161205-6944556-0000463") assert entries[1].postings[0].account == "" assert entries[1].postings[0].units.number == 50.00 assert entries[1].postings[0].units.currency == "EUR" assert entries[1].postings[1].account == "Assets:Checking" assert entries[1].postings[1].units.number == -50.00 assert entries[1].postings[1].units.currency == "EUR" assert "__duplicate__" not in entries[1].meta assert "__duplicate__" in entries[2].meta
def test_ingest_examplefile(): ingest_ledger = FavaLedger(FILE_PATH) identify_dir = list(ingest_ledger.ingest.identify_directory(".")) assert len(identify_dir) == 1 filename, importers = identify_dir[0] importer_name = importers[0].name() entries = ingest_ledger.ingest.extract(filename, importer_name) assert len(entries) == 4 assert entries[0].date == datetime.date(2017, 2, 12) assert entries[0].comment == "Hinweis: Zinssatz auf 0,15% geändert" assert entries[1].date == datetime.date(2017, 2, 13) assert (entries[1].narration == "Payment to Company XYZ REF: 31000161205-6944556-0000463") assert entries[1].postings[0].account == "" assert entries[1].postings[0].units.number == 50.00 assert entries[1].postings[0].units.currency == "EUR" assert entries[1].postings[1].account == "Assets:Checking" assert entries[1].postings[1].units.number == -50.00 assert entries[1].postings[1].units.currency == "EUR"
def small_example_ledger() -> FavaLedger: return FavaLedger(data_file("example.beancount"))
from fava.core.budgets import parse_budgets if TYPE_CHECKING: from fava.util.typing import LoaderResult TESTS_DIR = Path(__file__).parent def data_file(filename: str) -> str: return str(TESTS_DIR / "data" / filename) LONG_EXAMPLE_FILE = data_file("long-example.beancount") EXAMPLE_FILE = data_file("example.beancount") EXAMPLE_LEDGER = FavaLedger(LONG_EXAMPLE_FILE) fava_app.testing = True TEST_CLIENT = fava_app.test_client() fava_app.config["BEANCOUNT_FILES"] = [ LONG_EXAMPLE_FILE, EXAMPLE_FILE, data_file("extension-report-example.beancount"), data_file("import.beancount"), data_file("query-example.beancount"), ] _load_file() SNAPSHOT_UPDATE = bool(os.environ.get("SNAPSHOT_UPDATE")) MSG = "Maybe snapshots need to be updated with `SNAPSHOT_UPDATE=1 make test`?"
def ingest_ledger(): ledger = FavaLedger(FILE_PATH) return ledger
# pylint: disable=missing-docstring from __future__ import annotations from typing import Any import pytest from beancount.query.query import run_query from .conftest import data_file from .conftest import SnapshotFunc from fava.core import FavaLedger from fava.helpers import FavaAPIException LEDGER = FavaLedger(data_file("query-example.beancount")) QUERY = LEDGER.query_shell def run(query_string: str) -> Any: return QUERY.execute_query(query_string) def run_text(query_string: str) -> str: """Run a query that should only return string contents.""" contents, types, result = run(query_string) assert types is None assert result is None assert isinstance(contents, str) return contents def test_query() -> None:
from beancount.loader import load_string from fava.application import _load_file from fava.application import app as fava_app from fava.core import FavaLedger from fava.core.budgets import parse_budgets def data_file(filename: str) -> str: return str(Path(__file__).parent / "data" / filename) EXAMPLE_FILE = data_file("long-example.beancount") EXTENSION_REPORT_EXAMPLE_FILE = data_file("extension-report-example.beancount") EXAMPLE_LEDGER = FavaLedger(EXAMPLE_FILE) EXAMPLE_LEDGER_OPTIONS = deepcopy(EXAMPLE_LEDGER.options) EXAMPLE_LEDGER_FAVA_OPTIONS = deepcopy(EXAMPLE_LEDGER.fava_options) fava_app.testing = True TEST_CLIENT = fava_app.test_client() fava_app.config["BEANCOUNT_FILES"] = [ EXAMPLE_FILE, EXTENSION_REPORT_EXAMPLE_FILE, ] _load_file() SNAPSHOT_UPDATE = bool(os.environ.get("SNAPSHOT_UPDATE")) MSG = "Maybe snapshots need to be updated with `SNAPSHOT_UPDATE=1 make test`?"
def extension_report_ledger(): return FavaLedger(EXTENSION_REPORT_EXAMPLE_FILE)
def create_app(bfile): key = "BEANCOUNT_FILES" if (key not in fava_app.config) or (fava_app.config[key] != [bfile]): fava_app.config[key] = [bfile] _load_file() def data_file(filename): return os.path.join(os.path.dirname(__file__), "data", filename) EXAMPLE_FILE = data_file("long-example.beancount") EXTENSION_REPORT_EXAMPLE_FILE = data_file("extension-report-example.beancount") API = FavaLedger(EXAMPLE_FILE) fava_app.testing = True TEST_CLIENT = fava_app.test_client() create_app(EXAMPLE_FILE) SNAPSHOT_UPDATE = bool(os.environ.get("SNAPSHOT_UPDATE")) MSG = "Maybe snapshots need to be updated with `SNAPSHOT_UPDATE=1 make test`?" @pytest.fixture def snapshot(request): file_path = Path(request.fspath) fn_name = request.function.__name__ snap_dir = file_path.parent / "__snapshots__"
def small_example_ledger(): return FavaLedger(data_file('example.beancount'))