Creating a budget overview from a SuperX export.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

137 lines
4.1 KiB

import pytest
@pytest.fixture
def example_budget_data():
from superx_budget.budget import BudgetData
example = BudgetData(
3,
"1.",
"Safegurard I",
"01.08.2019-31.07.2020",
"1100000102",
"3210",
5000,
0,
0,
)
return example # noqa: RET504
def test_project_overview_init(example_budget_data):
from superx_budget.overview import ProjectOverview
over = ProjectOverview(example_budget_data)
assert over.budget_data == example_budget_data
assert over.entries == []
def test_project_overview_project_property(example_budget_data):
from superx_budget.overview import ProjectOverview
over = ProjectOverview(example_budget_data)
assert over.project == example_budget_data.project
def test_project_overview_row_property(example_budget_data):
from superx_budget.overview import ProjectOverview
over = ProjectOverview(example_budget_data)
assert over.row == example_budget_data.row
def test_project_overview_add(example_budget_data):
from superx_budget.overview import OverviewBudgetEntry, ProjectOverview
over = ProjectOverview(example_budget_data)
over.add("Sachmittel", "Obligo", -100)
over.add("Kleinzeugs", "Ausgaben", 200)
assert len(over.entries) == 2
assert isinstance(over.entries[0], OverviewBudgetEntry)
assert over.entries[0].description == "Sachmittel"
assert over.entries[0].kind == "Obligo"
assert over.entries[0].amount == -100
def test_project_overview_expenses_property(example_budget_data):
from superx_budget.overview import ProjectOverview
over = ProjectOverview(example_budget_data)
over.add("Sachmittel", "Obligo", -100)
over.add("Kleinzeugs", "Ausgaben", 200)
assert over.expenses == 300
def test_project_overview_available_property(example_budget_data):
from superx_budget.overview import ProjectOverview
over = ProjectOverview(example_budget_data)
over.add("Sachmittel", "Obligo", -100)
over.add("Kleinzeugs", "Ausgaben", 200)
assert over.available == 5000 - 300
def test_create_overview_map(budget_example_file):
from superx_budget.budget import parse_budget_file
from superx_budget.overview import _create_overview_map
budget_data = parse_budget_file(budget_example_file)
result = _create_overview_map(budget_data)
assert len(result) == 19 # the line starting with "Stand" is filtered out
assert "1083013701" in result
for key, value in result.items():
assert key == str(value.project)
def test_create_entries_from_export(budget_example_file, superx_example_file):
from superx_budget.budget import parse_budget_file
from superx_budget.overview import (
_create_entries_from_superx,
_create_overview_map,
)
from superx_budget.superx import parse_exported_file
superx_data = parse_exported_file(superx_example_file)
budget_data = parse_budget_file(budget_example_file)
budget_map = _create_overview_map(budget_data)
_create_entries_from_superx(budget_map, superx_data.data)
expenses = 0.01 + 1000 + 1 + 1001
assert budget_map["1100068704"].available == 2000 - expenses
def test_filter_superx_material_expenses(superx_example_file):
from superx_budget.overview import (
VALID_MATERIAL_IDS,
_filter_superx_material_expenses,
)
from superx_budget.superx import parse_exported_file
superx_data = parse_exported_file(superx_example_file)
result = list(_filter_superx_material_expenses(superx_data))
assert {item.kind for item in result} == VALID_MATERIAL_IDS
assert result[0].obligo == 1
assert result[0].expenses == 1001
def test_create_overview(budget_example_file, superx_example_file):
from superx_budget.budget import parse_budget_file
from superx_budget.overview import create_overview
from superx_budget.superx import parse_exported_file
superx_data = parse_exported_file(superx_example_file)
budget_data = parse_budget_file(budget_example_file)
budget_map = create_overview(budget_data, superx_data)
assert budget_map["1100068704"].available == 2000 - 1 - 1001