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
			| 
								 
											3 years ago
										 
									 | 
							
								'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+/,
							 | 
						||
| 
								 | 
							
								    nodes: []
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  app.on('preReady', function show () {
							 | 
						||
| 
								 | 
							
								    const json = app.toJSON()
							 | 
						||
| 
								 | 
							
								    outJson.stop = /\d*/
							 | 
						||
| 
								 | 
							
								    outJson.diff = /\d*/
							 | 
						||
| 
								 | 
							
								    t.match(json, outJson)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  function one (s, opts, done) {
							 | 
						||
| 
								 | 
							
								    const json = app.toJSON()
							 | 
						||
| 
								 | 
							
								    outJson.nodes.push({
							 | 
						||
| 
								 | 
							
								      id: /.+/,
							 | 
						||
| 
								 | 
							
								      parent: outJson.label,
							 | 
						||
| 
								 | 
							
								      label: 'one',
							 | 
						||
| 
								 | 
							
								      start: /\d+/
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								    t.match(json, outJson)
							 | 
						||
| 
								 | 
							
								    done()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  function two (s, opts, done) {
							 | 
						||
| 
								 | 
							
								    const json = app.toJSON()
							 | 
						||
| 
								 | 
							
								    outJson.nodes.push({
							 | 
						||
| 
								 | 
							
								      id: /.+/,
							 | 
						||
| 
								 | 
							
								      parent: outJson.label,
							 | 
						||
| 
								 | 
							
								      label: 'two',
							 | 
						||
| 
								 | 
							
								      start: /\d+/
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								    t.match(json, outJson)
							 | 
						||
| 
								 | 
							
								    done()
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  function three (s, opts, done) {
							 | 
						||
| 
								 | 
							
								    const json = app.toJSON()
							 | 
						||
| 
								 | 
							
								    outJson.nodes.push({
							 | 
						||
| 
								 | 
							
								      id: /.+/,
							 | 
						||
| 
								 | 
							
								      parent: outJson.label,
							 | 
						||
| 
								 | 
							
								      label: 'three',
							 | 
						||
| 
								 | 
							
								      start: /\d+/
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								    t.match(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.match(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()
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 |