59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
import tomllib
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
import tomli_w
|
|
|
|
from delta_barth import config
|
|
|
|
|
|
@pytest.fixture(scope="function")
|
|
def pth_cfg(pth_dummy_cfg, tmp_path) -> Path:
|
|
with open(pth_dummy_cfg, "rb") as file:
|
|
cfg_data = tomllib.load(file)
|
|
|
|
target = tmp_path / "dummy_cfg.toml"
|
|
target.touch()
|
|
with open(target, "wb") as file:
|
|
tomli_w.dump(cfg_data, file)
|
|
|
|
return target
|
|
|
|
|
|
@pytest.mark.new
|
|
def test_CfgLoader_Init(pth_cfg):
|
|
loader = config.LazyCfgLoader(pth_cfg)
|
|
|
|
assert loader.path == pth_cfg
|
|
assert loader._cfg is None
|
|
|
|
|
|
@pytest.mark.new
|
|
def test_CfgLoader_Get(pth_cfg):
|
|
loader = config.LazyCfgLoader(pth_cfg)
|
|
|
|
parsed_cfg = loader.get()
|
|
assert isinstance(parsed_cfg, config.Config)
|
|
assert parsed_cfg.forecast.threshold_month_data_points == 28
|
|
|
|
|
|
@pytest.mark.new
|
|
def test_CfgLoader_Reload(pth_cfg):
|
|
loader = config.LazyCfgLoader(pth_cfg)
|
|
|
|
parsed_cfg = loader.get()
|
|
assert isinstance(parsed_cfg, config.Config)
|
|
assert parsed_cfg.forecast.threshold_month_data_points == 28
|
|
# modify config and reload
|
|
with open(pth_cfg, "rb") as file:
|
|
cfg_data = tomllib.load(file)
|
|
cfg_data["forecast"]["threshold_month_data_points"] = 30
|
|
with open(pth_cfg, "wb") as file:
|
|
tomli_w.dump(cfg_data, file)
|
|
|
|
assert parsed_cfg.forecast.threshold_month_data_points == 28
|
|
loader.reload()
|
|
parsed_cfg = loader.get()
|
|
assert isinstance(parsed_cfg, config.Config)
|
|
assert parsed_cfg.forecast.threshold_month_data_points == 30
|