Files
progcode/web/public/assets/editorial/2019/rest-api-contract-fixture-2019.svg
huncode 18adfa80b4
Build and deploy / deploy (push) Successful in 13s
revise June and August 2019 articles
2026-07-31 10:49:16 +03:00

50 lines
4.8 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1280" role="img" aria-labelledby="title desc">
<title id="title">Локальная fixture проверяет контракт до сетевого теста</title>
<desc id="desc">Вертикальная схема показывает три локальных объекта ответа: корректные 200 и 400 проходят контрактную проверку, а 200 без nextCursor отклоняется; отдельный сетевой шаг не выполнен fixture.</desc>
<rect width="720" height="1280" fill="#0f172a"/>
<rect x="42" y="34" width="636" height="112" rx="18" fill="#1e3a8a"/>
<text x="360" y="80" text-anchor="middle" fill="#ffffff" font-size="28" font-family="Arial, sans-serif" font-weight="700">Fixture ловит нарушение до сети</text>
<text x="360" y="116" text-anchor="middle" fill="#bfdbfe" font-size="21" font-family="Arial, sans-serif">локальные объекты не заменяют сервер</text>
<rect x="85" y="190" width="550" height="108" rx="18" fill="#14532d" stroke="#86efac" stroke-width="3"/>
<text x="360" y="232" text-anchor="middle" fill="#ffffff" font-size="27" font-family="Arial, sans-serif" font-weight="700">Fixture A · 200 / JSON</text>
<text x="360" y="268" text-anchor="middle" fill="#dcfce7" font-size="22" font-family="Arial, sans-serif">nextCursor: null</text>
<path d="M360 298v34" stroke="#bfdbfe" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="85" y="338" width="550" height="108" rx="18" fill="#7f1d1d" stroke="#fca5a5" stroke-width="3"/>
<text x="360" y="380" text-anchor="middle" fill="#ffffff" font-size="27" font-family="Arial, sans-serif" font-weight="700">Fixture B · 400 / problem+json</text>
<text x="360" y="416" text-anchor="middle" fill="#fee2e2" font-size="22" font-family="Arial, sans-serif">errors[0].code: invalid_cursor</text>
<path d="M360 446v34" stroke="#bfdbfe" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="85" y="486" width="550" height="108" rx="18" fill="#7f1d1d" stroke="#fca5a5" stroke-width="3"/>
<text x="360" y="528" text-anchor="middle" fill="#ffffff" font-size="27" font-family="Arial, sans-serif" font-weight="700">Fixture C · 200 / JSON</text>
<text x="360" y="564" text-anchor="middle" fill="#fee2e2" font-size="22" font-family="Arial, sans-serif">нет обязательного nextCursor</text>
<path d="M360 594v44" stroke="#bfdbfe" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="75" y="644" width="570" height="184" rx="18" fill="#1d4ed8" stroke="#93c5fd" stroke-width="3"/>
<text x="360" y="690" text-anchor="middle" fill="#ffffff" font-size="28" font-family="Arial, sans-serif" font-weight="700">Контрактная проверка</text>
<text x="360" y="734" text-anchor="middle" fill="#dbeafe" font-size="23" font-family="Arial, sans-serif">1. HTTP status</text>
<text x="360" y="768" text-anchor="middle" fill="#dbeafe" font-size="23" font-family="Arial, sans-serif">2. Content-Type</text>
<text x="360" y="802" text-anchor="middle" fill="#dbeafe" font-size="23" font-family="Arial, sans-serif">3. schema body</text>
<path d="M360 828v42" stroke="#bfdbfe" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="85" y="876" width="550" height="96" rx="18" fill="#14532d" stroke="#86efac" stroke-width="3"/>
<text x="360" y="918" text-anchor="middle" fill="#ffffff" font-size="27" font-family="Arial, sans-serif" font-weight="700">PASS · A и B</text>
<text x="360" y="950" text-anchor="middle" fill="#dcfce7" font-size="21" font-family="Arial, sans-serif">валидная страница и problem detail</text>
<path d="M360 972v34" stroke="#bfdbfe" stroke-width="5" marker-end="url(#arrow)"/>
<rect x="85" y="1012" width="550" height="96" rx="18" fill="#991b1b" stroke="#fca5a5" stroke-width="3"/>
<text x="360" y="1054" text-anchor="middle" fill="#ffffff" font-size="27" font-family="Arial, sans-serif" font-weight="700">REJECT · C</text>
<text x="360" y="1086" text-anchor="middle" fill="#fee2e2" font-size="21" font-family="Arial, sans-serif">200 не отменяет обязательную schema</text>
<rect x="70" y="1152" width="580" height="72" rx="16" fill="#334155" stroke="#facc15" stroke-width="3"/>
<text x="360" y="1184" text-anchor="middle" fill="#f8fafc" font-size="23" font-family="Arial, sans-serif" font-weight="700">Следующий шаг: разрешённый тестовый сервер</text>
<text x="360" y="1214" text-anchor="middle" fill="#cbd5e1" font-size="19" font-family="Arial, sans-serif">fixture его не выполняет</text>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
<path d="M0 0L10 5L0 10z" fill="#bfdbfe"/>
</marker>
</defs>
</svg>