clone

a browser-first diagram editor with live svg previews, local drafts and encrypted, accountless sharing

main
diagramzip / apps / editor / test / renderer-units.test.js
renderer-units.test.js 1.7K
1import assert from 'node:assert/strict'2import test from 'node:test'3import { diagramTypes } from '../src/diagram-types.js'4import { HTTP_RENDERER_UNITS, httpRendererUnitFor } from '../src/renderer-units.js'56test('gives each HTTP renderer its own subdomain', () => {7 assert.equal(Object.keys(HTTP_RENDERER_UNITS).length, 32)8 for (const [engine, endpoint] of Object.entries(HTTP_RENDERER_UNITS)) {9 assert.equal(new URL(endpoint).hostname, `${engine}.render.diagram.zip`)10 assert.equal(new URL(endpoint).pathname, '/v1/svg')11 }12})1314test('routes every formerly client-rendered engine through its HTTP unit', () => {15 assert.equal(httpRendererUnitFor('bytefield'), 'https://bytefield.render.diagram.zip/v1/svg')16 assert.equal(httpRendererUnitFor('plantuml'), 'https://plantuml.render.diagram.zip/v1/svg')17 assert.equal(httpRendererUnitFor('mermaid'), 'https://mermaid.render.diagram.zip/v1/svg')18 assert.equal(httpRendererUnitFor('bpmn'), 'https://bpmn.render.diagram.zip/v1/svg')19 assert.equal(httpRendererUnitFor('excalidraw'), 'https://excalidraw.render.diagram.zip/v1/svg')20 assert.equal(httpRendererUnitFor('diagramsnet'), 'https://diagramsnet.render.diagram.zip/v1/svg')21 assert.equal(httpRendererUnitFor('tikz'), 'https://tikz.render.diagram.zip/v1/svg')22 assert.equal(httpRendererUnitFor('trn'), 'https://trn.render.diagram.zip/v1/svg')23})2425test('does not invent an endpoint for an unknown renderer', () => {26 assert.equal(httpRendererUnitFor('unknown'), null)27})2829test('assigns exactly one final renderer path to every diagram type', () => {30 const http = Object.keys(HTTP_RENDERER_UNITS)31 assert.equal(http.length, 32)32 assert.deepEqual(new Set(http), new Set(diagramTypes.map(({ id }) => id)))33})