M8-R14: preserve zero DSMR sample interval
This commit is contained in:
@@ -68,6 +68,32 @@ def test_secret_sanitize_and_mask_merge_keep_old_value():
|
||||
assert merged["topic"] == "new/topic"
|
||||
|
||||
|
||||
def test_dsmr_zero_interval_validates_sanitizes_and_merges_unchanged():
|
||||
config = validate_source_config("dsmr_mqtt", {"sample_interval_s": 0})
|
||||
|
||||
assert config["sample_interval_s"] == 0
|
||||
assert sanitize_source_config("dsmr_mqtt", config)["sample_interval_s"] == 0
|
||||
assert merge_source_config("dsmr_mqtt", config, {"topic": "new/topic"})["sample_interval_s"] == 0
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("kind", "config"),
|
||||
[
|
||||
("dsmr_mqtt", {"sample_interval_s": -1}),
|
||||
("dsmr_mqtt", {"sample_interval_s": False}),
|
||||
("dsmr_mqtt", {"broker_port": 0}),
|
||||
("dsmr_mqtt", {"broker_port": -1}),
|
||||
("dsmr_mqtt", {"broker_port": False}),
|
||||
("warmtelink_serial", {"path": "/dev/warmtelink", "baudrate": 0}),
|
||||
("warmtelink_serial", {"path": "/dev/warmtelink", "baudrate": -1}),
|
||||
("warmtelink_serial", {"path": "/dev/warmtelink", "baudrate": False}),
|
||||
],
|
||||
)
|
||||
def test_numeric_source_profile_constraints_still_reject_invalid_values(kind, config):
|
||||
with pytest.raises(SourceProfileError):
|
||||
validate_source_config(kind, config)
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def session(tmp_path):
|
||||
engine = create_engine(f"sqlite:///{tmp_path / 'source_services.db'}")
|
||||
|
||||
Reference in New Issue
Block a user