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() | ||
|  |     } | ||
|  |   }) | ||
|  | }) |