mirror of https://github.com/requarks/wiki
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.0 KiB
118 lines
3.0 KiB
const MarkdownIt = require('markdown-it')
|
|
|
|
let hasTopologyUi = true
|
|
try {
|
|
require.resolve('@couchbaselabs/topology-ui')
|
|
} catch (err) {
|
|
hasTopologyUi = false
|
|
}
|
|
|
|
const describeIfTopologyUi = hasTopologyUi ? describe : describe.skip
|
|
|
|
describeIfTopologyUi('markdown couchbase topology renderer', () => {
|
|
const renderer = require('../../modules/rendering/markdown-couchbase-topology/renderer')
|
|
|
|
test('renders a fenced topology block as html', () => {
|
|
const md = new MarkdownIt({ html: true, breaks: true, linkify: true })
|
|
renderer.init(md, {
|
|
allowJavaScript: true,
|
|
assetRoot: '/_assets/topology-ui/images',
|
|
openMarker: '```couchbase-topology',
|
|
closeMarker: '```'
|
|
})
|
|
|
|
const html = md.render(`
|
|
\`\`\`couchbase-topology
|
|
{
|
|
"name": "cb-demo",
|
|
"version": "7.2.0",
|
|
"serverGroups": [
|
|
{
|
|
"name": "sg1",
|
|
"nodes": [
|
|
{
|
|
"name": "cb-demo0001",
|
|
"services": ["Data", "Query"],
|
|
"status": "HEALTHY"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
\`\`\`
|
|
`)
|
|
|
|
expect(html).toContain('cb-topology-renderer-host')
|
|
expect(html).toContain('cb-topology-renderer')
|
|
expect(html).toContain('cb-demo')
|
|
expect(html).toContain('/_assets/topology-ui/images/nodebg.png')
|
|
})
|
|
|
|
test('supports alignment attrs on the fence closing line', () => {
|
|
const md = new MarkdownIt({ html: true, breaks: true, linkify: true })
|
|
renderer.init(md, {
|
|
allowJavaScript: true,
|
|
assetRoot: '/_assets/topology-ui/images',
|
|
openMarker: '```couchbase-topology',
|
|
closeMarker: '```'
|
|
})
|
|
|
|
const html = md.render(`
|
|
\`\`\`couchbase-topology
|
|
{
|
|
"name": "cb-demo",
|
|
"version": "7.2.0",
|
|
"serverGroups": []
|
|
}
|
|
\`\`\` {.align-center #demo-topology}
|
|
`)
|
|
|
|
expect(html).toContain('class="cb-topology-renderer-host align-center"')
|
|
expect(html).toContain('id="demo-topology"')
|
|
})
|
|
|
|
test('supports alignment attrs on the line after the fence', () => {
|
|
const md = new MarkdownIt({ html: true, breaks: true, linkify: true })
|
|
renderer.init(md, {
|
|
allowJavaScript: true,
|
|
assetRoot: '/_assets/topology-ui/images',
|
|
openMarker: '```couchbase-topology',
|
|
closeMarker: '```'
|
|
})
|
|
|
|
const html = md.render(`
|
|
\`\`\`couchbase-topology
|
|
{
|
|
"name": "cb-demo",
|
|
"version": "7.2.0",
|
|
"serverGroups": []
|
|
}
|
|
\`\`\`
|
|
{.align-right}
|
|
`)
|
|
|
|
expect(html).toContain('class="cb-topology-renderer-host align-right"')
|
|
expect(html).not.toContain('<p class="align-right"></p>')
|
|
})
|
|
|
|
test('returns an error block for invalid payloads', () => {
|
|
const md = new MarkdownIt({ html: true, breaks: true, linkify: true })
|
|
renderer.init(md, {
|
|
allowJavaScript: false,
|
|
assetRoot: '/_assets/topology-ui/images',
|
|
openMarker: '```couchbase-topology',
|
|
closeMarker: '```'
|
|
})
|
|
|
|
const html = md.render(`
|
|
\`\`\`couchbase-topology
|
|
{ name: "broken" }
|
|
\`\`\`
|
|
`)
|
|
|
|
expect(html).toContain('cb-topology-renderer-host')
|
|
expect(html).toContain('cb-topology-renderer--error')
|
|
expect(html).toContain('Topology source is not valid JSON')
|
|
})
|
|
})
|