mermaid/test/cli_test-output.js

159 lines
3.8 KiB
JavaScript
Raw Normal View History

2017-09-10 11:42:39 +08:00
/* eslint-env jest */
/* eslint-env jasmine */
2017-09-10 21:23:04 +08:00
import fs from 'fs'
import path from 'path'
import async from 'async'
import clone from 'clone'
import rimraf from 'rimraf'
2014-12-20 17:40:58 -08:00
2017-09-10 21:23:04 +08:00
import mermaidCli from '../lib'
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const fileTestMermaid = path.join('test', 'fixtures', 'test.mermaid')
const isWin = /^win/.test(process.platform)
let phantomCmd
if (isWin) {
phantomCmd = 'node_modules/.bin/phantomjs.cmd'
2017-04-10 21:26:38 +08:00
} else {
phantomCmd = 'node_modules/.bin/phantomjs'
}
2017-04-10 21:26:38 +08:00
const singleFile = {
files: [fileTestMermaid],
outputDir: path.join(process.cwd(), 'test/tmp_single'),
phantomPath: path.join(process.cwd(), phantomCmd),
width: 1200,
css: path.join(__dirname, '..', 'dist', 'mermaid.css'),
sequenceConfig: null,
ganttConfig: null
}
const multiFile = {
files: [path.join('test', 'fixtures', 'test.mermaid'),
path.join('test', 'fixtures', 'test2.mermaid'),
path.join('test', 'fixtures', 'gantt.mermaid'),
path.join('test', 'fixtures', 'sequence.mermaid')
],
outputDir: 'test/tmp_multi',
phantomPath: path.join(process.cwd(), phantomCmd),
width: 1200,
css: path.join(__dirname, '..', 'dist', 'mermaid.css'),
sequenceConfig: null,
ganttConfig: null
}
2014-12-20 17:40:58 -08:00
2017-09-10 11:42:39 +08:00
beforeEach(() => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 64000
})
test('output of single png', function (done) {
expect.assertions(3)
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const expected = ['test.mermaid.png']
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const opt = clone(singleFile)
opt.outputDir += '_png'
2014-12-20 17:40:58 -08:00
opt.png = true
2017-04-10 21:26:38 +08:00
2017-09-10 21:23:04 +08:00
mermaidCli.process(opt.files, opt, function (code) {
2017-09-10 11:42:39 +08:00
expect(code).toBe(0)
2014-12-20 17:40:58 -08:00
2017-09-10 11:42:39 +08:00
verifyFiles(expected, opt.outputDir, done)
2014-12-20 17:40:58 -08:00
})
})
2017-09-10 11:42:39 +08:00
test('output of multiple png', function (done) {
expect.assertions(3)
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const expected = ['test.mermaid.png', 'test2.mermaid.png',
'gantt.mermaid.png', 'sequence.mermaid.png']
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const opt = clone(multiFile)
opt.outputDir += '_png'
2014-12-20 17:40:58 -08:00
opt.png = true
2017-09-10 21:23:04 +08:00
mermaidCli.process(opt.files, opt, function (code) {
2017-09-10 11:42:39 +08:00
expect(code).toBe(0)
2014-12-20 17:40:58 -08:00
2017-09-10 11:42:39 +08:00
verifyFiles(expected, opt.outputDir, done)
2014-12-20 17:40:58 -08:00
})
})
2017-09-10 11:42:39 +08:00
test('output of single svg', function (done) {
expect.assertions(3)
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const expected = ['test.mermaid.svg']
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const opt = clone(singleFile)
opt.outputDir += '_svg'
2014-12-20 17:40:58 -08:00
opt.svg = true
2017-09-10 21:23:04 +08:00
mermaidCli.process(opt.files, opt, function (code) {
2017-09-10 11:42:39 +08:00
expect(code).toBe(0)
2014-12-20 17:40:58 -08:00
2017-09-10 11:42:39 +08:00
verifyFiles(expected, opt.outputDir, done)
2014-12-20 17:40:58 -08:00
})
})
2017-09-10 11:42:39 +08:00
test('output of multiple svg', function (done) {
expect.assertions(3)
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const expected = ['test.mermaid.svg', 'test2.mermaid.svg',
'gantt.mermaid.svg', 'sequence.mermaid.svg']
2014-12-20 17:40:58 -08:00
2017-04-10 21:26:38 +08:00
const opt = clone(multiFile)
opt.outputDir += '_svg'
2014-12-20 17:40:58 -08:00
opt.svg = true
2017-09-10 21:23:04 +08:00
mermaidCli.process(opt.files, opt, function (code) {
2017-09-10 11:42:39 +08:00
expect(code).toBe(0)
2014-12-20 17:40:58 -08:00
2017-09-10 11:42:39 +08:00
verifyFiles(expected, opt.outputDir, done)
2014-12-20 17:40:58 -08:00
})
})
2017-09-10 11:42:39 +08:00
test('output including CSS', function (done) {
expect.assertions(5)
2015-02-02 19:02:45 -08:00
2017-04-10 21:26:38 +08:00
const expected = ['test.mermaid.png']
const opt = clone(singleFile)
const opt2 = clone(singleFile)
2015-02-02 19:02:45 -08:00
opt.png = true
opt.outputDir += '_css_png'
opt2.png = true
opt2.outputDir += '_css_png'
2017-09-10 21:23:04 +08:00
mermaidCli.process(opt.files, opt, function (code) {
2017-09-10 11:42:39 +08:00
expect(code).toBe(0)
2017-04-10 21:26:38 +08:00
const filename = path.join(opt.outputDir, path.basename(expected[0]))
const one = fs.statSync(filename)
2015-02-02 19:02:45 -08:00
2017-04-10 21:26:38 +08:00
opt2.css = path.join('test', 'fixtures', 'test.css')
2015-02-02 19:02:45 -08:00
2017-09-10 21:23:04 +08:00
mermaidCli.process(opt2.files, opt2, function (code) {
2017-09-10 11:42:39 +08:00
expect(code).toBe(0)
2017-04-10 21:26:38 +08:00
const two = fs.statSync(filename)
2017-09-10 11:42:39 +08:00
expect(one.size).not.toBe(two.size)
2015-02-02 19:02:45 -08:00
2017-09-10 11:42:39 +08:00
verifyFiles(expected, opt.outputDir, done)
2015-02-02 19:02:45 -08:00
})
})
})
2017-09-10 11:42:39 +08:00
function verifyFiles (expected, dir, done) {
2014-12-20 17:40:58 -08:00
async.each(
2017-04-10 21:26:38 +08:00
expected, function (file, cb) {
const filename = path.join(dir, path.basename(file))
fs.stat(filename, function (err, stat) {
cb(err)
})
}, function (err) {
2017-09-10 11:42:39 +08:00
expect(err).toBeFalsy()
2017-04-10 21:26:38 +08:00
const deleteTmps = true
const _rimraf = deleteTmps ? rimraf : function (dir, f) { f(0) }
_rimraf(dir, function (rmerr) {
2017-09-10 11:42:39 +08:00
expect(rmerr).toBeFalsy()
done()
2017-04-10 21:26:38 +08:00
})
}
2014-12-20 17:40:58 -08:00
)
}