Files
planeMapper/tests/provisioning/test_config.py
T
Matt Edholm 826f1d98fa Implement story 1.2: config read/write/wipe
Add provisioning/config.py with read/write/wipe functions, update
conftest.py with autouse CONFIG_PATH patch fixture, write 7 tests
covering all acceptance criteria, and extend pyproject.toml
per-file-ignores so conftest.py may import from provisioning.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:35:11 -04:00

70 lines
1.7 KiB
Python

import json
from pathlib import Path
import pytest
import planemapper.provisioning.config as config_module
SAMPLE_CONFIG = {
"home_lat": 51.5074,
"home_lon": -0.1278,
"coverage_radius_nm": 100,
"wifi_ssid": "HomeNetwork",
"wifi_password": "s3cr3t",
"provisioned": False,
}
def test_read_raises_when_no_file_exists() -> None:
with pytest.raises(FileNotFoundError):
config_module.read()
def test_write_creates_file_with_correct_content(tmp_path: Path) -> None:
config_module.write(SAMPLE_CONFIG)
assert config_module.CONFIG_PATH.exists()
with config_module.CONFIG_PATH.open() as f:
data = json.load(f)
for key in (
"home_lat",
"home_lon",
"coverage_radius_nm",
"wifi_ssid",
"wifi_password",
"provisioned",
):
assert key in data
assert data["home_lat"] == 51.5074
assert data["wifi_ssid"] == "HomeNetwork"
assert data["provisioned"] is False
def test_write_then_read_round_trips() -> None:
config_module.write(SAMPLE_CONFIG)
result = config_module.read()
assert result == SAMPLE_CONFIG
def test_wipe_deletes_file() -> None:
config_module.write(SAMPLE_CONFIG)
assert config_module.CONFIG_PATH.exists()
config_module.wipe()
assert not config_module.CONFIG_PATH.exists()
def test_wipe_then_read_raises() -> None:
config_module.write(SAMPLE_CONFIG)
config_module.wipe()
with pytest.raises(FileNotFoundError):
config_module.read()
def test_wipe_is_idempotent() -> None:
# wipe on a non-existent file should not raise
config_module.wipe()
config_module.wipe()
def test_config_path_is_in_tmp_path(tmp_path: Path) -> None:
assert str(config_module.CONFIG_PATH).startswith(str(tmp_path))