feat(scada): add calibrated monitoring and incident recovery
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
from copy import deepcopy
|
||||
from datetime import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from app.mcp.display_time import display_query_result, display_time_text
|
||||
|
||||
|
||||
@pytest.mark.parametrize("original,displayed", [
|
||||
("2026-07-16T00:00:00Z", "2026-07-16T08:00:00+08:00"),
|
||||
("2026-07-16T08:00:00+08:00", "2026-07-16T08:00:00+08:00"),
|
||||
("2026-12-31T16:00:00.123456789Z", "2027-01-01T00:00:00.123456789+08:00"),
|
||||
("2026-12-31T23:00:00-03:30", "2027-01-01T10:30:00+08:00"),
|
||||
])
|
||||
def test_display_keeps_the_instant_precision_and_is_idempotent(original, displayed):
|
||||
data = {"time": original, "sample_times": [None, original], "value": 0}
|
||||
snapshot = deepcopy(data)
|
||||
result = display_query_result(data)
|
||||
assert result["time"] == displayed
|
||||
assert result["sample_times"] == [None, displayed]
|
||||
assert datetime.fromisoformat(original) == datetime.fromisoformat(displayed)
|
||||
assert display_query_result(result) == result
|
||||
assert data == snapshot
|
||||
|
||||
|
||||
def test_metadata_identifiers_links_code_and_selected_ids_keep_their_spelling():
|
||||
original = "2026-07-16T00:00:00Z"
|
||||
fields = {key: original for key in ("id", "evidence_id", "source_ref", "next_cursor", "resource_uri", "relative_path", "instructions")}
|
||||
assert display_query_result(fields) == fields
|
||||
opaque_page = {"selected_path": ["source", "external_id"], "value": original}
|
||||
assert display_query_result(opaque_page) == opaque_page
|
||||
time_page = {"selected_path": ["source", "replay_context", "knowledge_cutoff"], "value": original}
|
||||
assert display_query_result(time_page)["value"] == "2026-07-16T08:00:00+08:00"
|
||||
text = f"观测{original};`{original}`;https://example.test/{original};id_{original}"
|
||||
assert display_time_text(text) == text.replace("观测" + original, "观测2026-07-16T08:00:00+08:00")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("value", ["2026-07-16 08:00", "2026-07-16T08:00:00", "2026-02-30T00:00:00Z", "未记录"])
|
||||
def test_unzoned_or_invalid_values_keep_their_explicit_source(value):
|
||||
assert display_query_result({"time": value}) == {"time": value}
|
||||
Reference in New Issue
Block a user