1import json23import pytest45from protocol import ProtocolError, parse_render_input678def test_parses_the_unit_contract():9 parsed = parse_render_input(json.dumps({10 "source": "blockdiag { A -> B; }",11 "format": "svg",12 "options": {"scale": 2, "safe": True},13 "metadata": {"title": "Example", "description": "Description"},14 "presentation": {"background": "#abcdef", "padding": 12, "frame": True},15 }))1617 assert parsed.source.startswith("blockdiag")18 assert parsed.options == {"scale": "2", "safe": "true"}19 assert parsed.title == "Example"20 assert parsed.background == "#abcdef"21 assert parsed.padding == 1222 assert parsed.frame is True232425def test_rejects_an_engine_selector():26 with pytest.raises(ProtocolError, match="must not select an engine"):27 parse_render_input(json.dumps({"engine": "rackdiag", "source": "rackdiag {}"}))282930def test_rejects_invalid_presentation():31 with pytest.raises(ProtocolError, match="RGB hex color"):32 parse_render_input(json.dumps({"source": "blockdiag {}", "presentation": {"background": "white"}}))