Files
MyManagingTools/tests/test_dummydbengine.py

109 lines
3.2 KiB
Python

import os.path
import pytest
from core.dbengine import DbException
from core.settings_management import DummyDbEngine
from core.settings_objects import BudgetTrackerSettings
settings_file = DummyDbEngine().db_path
FAKE_USER_ID = "FakeUserId"
@pytest.fixture(autouse=True)
def setup_and_finalize():
if os.path.exists(settings_file):
os.remove(settings_file)
yield
if os.path.exists(settings_file):
os.remove(settings_file)
@pytest.fixture()
def engine():
return DummyDbEngine()
def test_i_can_save_and_load(engine):
obj = BudgetTrackerSettings(
spread_sheet="spread_sheet",
col_row_num="row_number",
col_project="project",
col_owner="owner",
col_capex="capex",
col_details="details",
col_supplier="supplier",
col_budget_amt="budget",
col_actual_amt="actual",
col_forecast5_7_amt="forecast5_7",
)
engine.save(FAKE_USER_ID, "MyEntry", obj)
res = engine.load(FAKE_USER_ID, "MyEntry")
assert isinstance(res, BudgetTrackerSettings)
assert res.spread_sheet == obj.spread_sheet
assert res.col_row_num == obj.col_row_num
assert res.col_project == obj.col_project
assert res.col_owner == obj.col_owner
assert res.col_capex == obj.col_capex
assert res.col_details == obj.col_details
assert res.col_supplier == obj.col_supplier
assert res.col_budget_amt == obj.col_budget_amt
assert res.col_actual_amt == obj.col_actual_amt
assert res.col_forecast5_7_amt == obj.col_forecast5_7_amt
def test_i_can_save_and_modify(engine):
obj = BudgetTrackerSettings()
engine.save(FAKE_USER_ID, "MyEntry", obj)
obj = BudgetTrackerSettings(
spread_sheet="modified_spread_sheet",
col_row_num="modified_row_number",
col_project="modified_project",
col_owner="modified_owner",
col_capex="modified_capex",
col_details="modified_details",
col_supplier="modified_supplier",
col_budget_amt="modified_budget",
col_actual_amt="modified_actual",
col_forecast5_7_amt="forecast5_7",
)
engine.save(FAKE_USER_ID, "MyEntry", obj)
res = engine.load(FAKE_USER_ID, "MyEntry")
assert isinstance(res, BudgetTrackerSettings)
assert res.spread_sheet == obj.spread_sheet
assert res.col_row_num == obj.col_row_num
assert res.col_project == obj.col_project
assert res.col_owner == obj.col_owner
assert res.col_capex == obj.col_capex
assert res.col_details == obj.col_details
assert res.col_supplier == obj.col_supplier
assert res.col_budget_amt == obj.col_budget_amt
assert res.col_actual_amt == obj.col_actual_amt
assert res.col_forecast5_7_amt == obj.col_forecast5_7_amt
def test_i_cannot_load_if_no_setting_file(engine):
with pytest.raises(DbException) as ex:
engine.load(FAKE_USER_ID, "MyEntry")
assert str(ex.value) == f"Entry 'MyEntry' is not found."
def test_i_cannot_load_if_no_entry_found(engine):
obj = BudgetTrackerSettings()
engine.save(FAKE_USER_ID, "AnotherEntry", obj)
with pytest.raises(DbException) as ex:
engine.load(FAKE_USER_ID, "MyEntry")
assert str(ex.value) == f"Entry 'MyEntry' is not found."