Files
next-tjwater-server/tests/unit/test_mcp_display_time.py
T

41 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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}