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.
152 lines
2.7 KiB
152 lines
2.7 KiB
'use strict'
|
|
|
|
const test = require('tap').test
|
|
const boot = require('..')
|
|
|
|
test('to json', (t) => {
|
|
t.plan(4)
|
|
|
|
const app = boot()
|
|
app
|
|
.use(one)
|
|
.use(two)
|
|
.use(three)
|
|
|
|
const outJson = {
|
|
id: 'root',
|
|
label: 'bound root',
|
|
start: /\d+/,
|
|
stop: /\d*/,
|
|
diff: /\d*/,
|
|
nodes: []
|
|
}
|
|
|
|
app.on('preReady', function show () {
|
|
const json = app.toJSON()
|
|
t.like(json, outJson)
|
|
})
|
|
|
|
function one (s, opts, done) {
|
|
const json = app.toJSON()
|
|
outJson.nodes.push({
|
|
id: /.+/,
|
|
parent: outJson.label,
|
|
label: 'one',
|
|
start: /\d+/
|
|
})
|
|
t.like(json, outJson)
|
|
done()
|
|
}
|
|
function two (s, opts, done) {
|
|
const json = app.toJSON()
|
|
outJson.nodes.push({
|
|
id: /.+/,
|
|
parent: outJson.label,
|
|
label: 'two',
|
|
start: /\d+/
|
|
})
|
|
t.like(json, outJson)
|
|
done()
|
|
}
|
|
function three (s, opts, done) {
|
|
const json = app.toJSON()
|
|
outJson.nodes.push({
|
|
id: /.+/,
|
|
parent: outJson.label,
|
|
label: 'three',
|
|
start: /\d+/
|
|
})
|
|
t.like(json, outJson)
|
|
done()
|
|
}
|
|
})
|
|
|
|
test('to json multi-level hierarchy', (t) => {
|
|
t.plan(4)
|
|
|
|
const server = { name: 'asd', count: 0 }
|
|
const app = boot(server)
|
|
|
|
const outJson = {
|
|
id: 'root',
|
|
label: 'bound root',
|
|
start: /\d+/,
|
|
nodes: [
|
|
{
|
|
id: /.+/,
|
|
parent: 'bound root',
|
|
start: /\d+/,
|
|
label: 'first',
|
|
nodes: [
|
|
{
|
|
id: /.+/,
|
|
parent: 'first',
|
|
start: /\d+/,
|
|
label: 'second',
|
|
nodes: [],
|
|
stop: /\d+/,
|
|
diff: /\d+/
|
|
},
|
|
{
|
|
id: /.+/,
|
|
parent: 'first',
|
|
start: /\d+/,
|
|
label: 'third',
|
|
nodes: [
|
|
{
|
|
id: /.+/,
|
|
parent: 'third',
|
|
start: /\d+/,
|
|
label: 'fourth',
|
|
nodes: [],
|
|
stop: /\d+/,
|
|
diff: /\d+/
|
|
}
|
|
],
|
|
stop: /\d+/,
|
|
diff: /\d+/
|
|
}
|
|
],
|
|
stop: /\d+/,
|
|
diff: /\d+/
|
|
}
|
|
],
|
|
stop: /\d+/,
|
|
diff: /\d+/
|
|
}
|
|
|
|
app.on('preReady', function show () {
|
|
const json = app.toJSON()
|
|
t.like(json, outJson)
|
|
})
|
|
|
|
app.override = function (s) {
|
|
const res = Object.create(s)
|
|
res.count = res.count + 1
|
|
res.name = 'qwe'
|
|
return res
|
|
}
|
|
|
|
app.use(function first (s1, opts, cb) {
|
|
s1.use(second)
|
|
s1.use(third)
|
|
cb()
|
|
|
|
function second (s2, opts, cb) {
|
|
t.equal(s2.count, 2)
|
|
cb()
|
|
}
|
|
|
|
function third (s3, opts, cb) {
|
|
s3.use(fourth)
|
|
t.equal(s3.count, 2)
|
|
cb()
|
|
}
|
|
|
|
function fourth (s4, opts, cb) {
|
|
t.equal(s4.count, 3)
|
|
cb()
|
|
}
|
|
})
|
|
})
|