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+/,
 | 
						|
    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()
 | 
						|
    }
 | 
						|
  })
 | 
						|
})
 |