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}