"""Unit tests for _parse_custom_fields — no DB or HTTP needed.""" import json from web.routes.evotor_webhooks import _parse_custom_fields def test_none_returns_empty(): assert _parse_custom_fields(None) == {} def test_dict_passthrough(): d = {"email": "a@b.com", "phone": "+79001234567"} assert _parse_custom_fields(d) == d def test_json_string_parsed(): raw = json.dumps({"email": "a@b.com", "firstName": "Иван"}) result = _parse_custom_fields(raw) assert result["email"] == "a@b.com" assert result["firstName"] == "Иван" def test_plain_string_returns_empty(): # A plain non-JSON string cannot be parsed into fields assert _parse_custom_fields("just some text") == {} def test_json_array_returns_empty(): # A JSON array is not a dict — treat as unparseable assert _parse_custom_fields("[1, 2, 3]") == {} def test_empty_string_returns_empty(): assert _parse_custom_fields("") == {} def test_nested_values_preserved(): raw = {"email": "x@y.com", "meta": {"key": "val"}} result = _parse_custom_fields(raw) assert result["meta"]["key"] == "val"