mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-09-13 07:21:16 +00:00
Json configuration (#141)
* Add json config * Adjust code to new config --------- Co-authored-by: Chris <git@nootch.de>
This commit is contained in:
71
tests/test_config.py
Normal file
71
tests/test_config.py
Normal file
@@ -0,0 +1,71 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from pydantic import ValidationError
|
||||
|
||||
from akkudoktoreos.config import (
|
||||
CONFIG_FILE_NAME,
|
||||
DEFAULT_CONFIG_FILE,
|
||||
get_config_file,
|
||||
load_config,
|
||||
)
|
||||
|
||||
|
||||
def test_config() -> None:
|
||||
"""Test the default config file."""
|
||||
try:
|
||||
load_config(Path.cwd())
|
||||
except ValidationError as exc:
|
||||
pytest.fail(f"Default configuration is not valid: {exc}")
|
||||
|
||||
|
||||
def test_config_copy(tmp_path: Path) -> None:
|
||||
"""Test if the config is copied to the provided path."""
|
||||
assert DEFAULT_CONFIG_FILE == get_config_file(Path("does", "not", "exist"), False)
|
||||
|
||||
load_config(tmp_path, True)
|
||||
expected_config = tmp_path.joinpath(CONFIG_FILE_NAME)
|
||||
|
||||
assert expected_config == get_config_file(tmp_path, False)
|
||||
assert expected_config.is_file()
|
||||
|
||||
|
||||
def test_config_merge(tmp_path: Path) -> None:
|
||||
"""Test if config is merged and updated correctly."""
|
||||
config_file = tmp_path.joinpath(CONFIG_FILE_NAME)
|
||||
custom_config = {
|
||||
"eos": {
|
||||
"optimization_hours": 30,
|
||||
"penalty": 21,
|
||||
"does_not_exist": "nope",
|
||||
"available_charging_rates_in_percentage": "False entry",
|
||||
}
|
||||
}
|
||||
with config_file.open("w") as f_out:
|
||||
json.dump(custom_config, f_out)
|
||||
|
||||
assert config_file.exists()
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
# custom configuration is broken but not updated.
|
||||
load_config(tmp_path, tmp_path, False)
|
||||
|
||||
with config_file.open("r") as f_in:
|
||||
# custom configuration is not changed.
|
||||
assert json.load(f_in) == custom_config
|
||||
|
||||
config = load_config(tmp_path)
|
||||
|
||||
assert config.eos.optimization_hours == 30
|
||||
assert config.eos.penalty == 21
|
||||
|
||||
|
||||
def test_setup(tmp_path: Path) -> None:
|
||||
"""Test setup."""
|
||||
config = load_config(tmp_path, True)
|
||||
config.run_setup()
|
||||
|
||||
assert tmp_path.joinpath(CONFIG_FILE_NAME).is_file()
|
||||
assert tmp_path.joinpath(config.directories.cache).is_dir()
|
||||
assert tmp_path.joinpath(config.directories.output).is_dir()
|
Reference in New Issue
Block a user