Spaces:
Running
Running
| from app.services.json_calls import parse_json_response | |
| def test_plain_json_object(): | |
| assert parse_json_response('{"a": 1}') == {"a": 1} | |
| def test_plain_json_array(): | |
| assert parse_json_response('[1, 2, 3]') == [1, 2, 3] | |
| def test_markdown_fence(): | |
| raw = "```json\n{\"a\": 1}\n```" | |
| assert parse_json_response(raw) == {"a": 1} | |
| def test_markdown_fence_no_lang(): | |
| raw = "```\n{\"a\": 1}\n```" | |
| assert parse_json_response(raw) == {"a": 1} | |
| def test_prose_then_json(): | |
| raw = "Sure, here's the result:\n\n{\"a\": 1, \"b\": [2,3]}" | |
| assert parse_json_response(raw) == {"a": 1, "b": [2, 3]} | |
| def test_json_then_prose(): | |
| raw = "{\"a\": 1}\nThe end." | |
| assert parse_json_response(raw) == {"a": 1} | |
| def test_nested_braces_ok(): | |
| raw = "Look:\n{\"outer\": {\"inner\": [1, {\"k\": \"v\"}]}}" | |
| assert parse_json_response(raw) == {"outer": {"inner": [1, {"k": "v"}]}} | |
| def test_string_with_braces_doesnt_confuse_balancer(): | |
| raw = '{"text": "this has } and { in it", "ok": true}' | |
| assert parse_json_response(raw) == {"text": "this has } and { in it", "ok": True} | |
| def test_unparseable_returns_none(): | |
| assert parse_json_response("not json at all") is None | |
| def test_empty_returns_none(): | |
| assert parse_json_response("") is None | |
| assert parse_json_response(None) is None | |