- Introduced `get_profile_reference_values_current_snapshot` and `get_profile_reference_values_recent_snapshot` functions to retrieve current and recent reference values for profiles. - Updated the placeholder resolver to include new placeholders for current and recent reference values. - Added new API endpoints for fetching current and recent reference values snapshots. - Enhanced the frontend API utility to support the new snapshot endpoints. - Improved unit tests to validate the new data layer functions and their behavior.
76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
"""Unit tests for data_layer.reference_values (summary assembly, no DB)."""
|
|
|
|
from datetime import date
|
|
from decimal import Decimal
|
|
|
|
from data_layer.reference_values import _entry_dict_from_ranked_row, build_summary_tiles_from_ranked_rows
|
|
|
|
|
|
def test_build_summary_tiles_single_type_two_rows():
|
|
raw = [
|
|
{
|
|
"type_key": "hr_max",
|
|
"type_label": "HF max",
|
|
"type_sort_order": 1,
|
|
"value_data_type": "decimal",
|
|
"rn": 1,
|
|
"id": 2,
|
|
"effective_date": "2026-04-01",
|
|
"value_numeric": 180.0,
|
|
"value_text": None,
|
|
"unit": "bpm",
|
|
},
|
|
{
|
|
"type_key": "hr_max",
|
|
"type_label": "HF max",
|
|
"type_sort_order": 1,
|
|
"value_data_type": "decimal",
|
|
"rn": 2,
|
|
"id": 1,
|
|
"effective_date": "2026-03-01",
|
|
"value_numeric": 175.0,
|
|
"value_text": None,
|
|
"unit": "bpm",
|
|
},
|
|
]
|
|
tiles = build_summary_tiles_from_ranked_rows(raw)
|
|
assert len(tiles) == 1
|
|
t = tiles[0]
|
|
assert t["type_key"] == "hr_max"
|
|
assert t["latest"]["value_numeric"] == 180.0
|
|
assert t["previous"]["value_numeric"] == 175.0
|
|
assert "sort_key" not in t
|
|
|
|
|
|
def test_build_summary_tiles_multi_type_order():
|
|
raw = [
|
|
{"type_key": "b", "type_label": "B", "type_sort_order": 2, "value_data_type": "decimal", "rn": 1, "id": 1},
|
|
{"type_key": "a", "type_label": "A", "type_sort_order": 1, "value_data_type": "decimal", "rn": 1, "id": 2},
|
|
]
|
|
tiles = build_summary_tiles_from_ranked_rows(raw)
|
|
assert [x["type_key"] for x in tiles] == ["a", "b"]
|
|
|
|
|
|
def test_entry_dict_from_ranked_row_normalizes_decimal():
|
|
row = {
|
|
"id": 1,
|
|
"profile_id": "p",
|
|
"reference_value_type_id": 9,
|
|
"effective_date": date(2026, 4, 1),
|
|
"value_numeric": Decimal("42.5"),
|
|
"value_text": None,
|
|
"unit": "bpm",
|
|
"source": "lab",
|
|
"confidence": "high",
|
|
"method": "spiro",
|
|
"notes": None,
|
|
"extra": None,
|
|
"created_at": date(2026, 4, 2),
|
|
"updated_at": date(2026, 4, 2),
|
|
"type_key": "hr_max",
|
|
"type_label": "HF max",
|
|
}
|
|
out = _entry_dict_from_ranked_row(row)
|
|
assert out["value_numeric"] == 42.5
|
|
assert out["effective_date"] == "2026-04-01"
|