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.
		
		
		
		
		
			
		
			
				
					
					
						
							125 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
	
	
							125 lines
						
					
					
						
							3.1 KiB
						
					
					
				| 'use strict'
 | |
| 
 | |
| const test = require('tap').test
 | |
| const boot = require('..')
 | |
| 
 | |
| test('one level', (t) => {
 | |
|   t.plan(13)
 | |
| 
 | |
|   const app = boot()
 | |
|   let firstLoaded = false
 | |
|   let secondLoaded = false
 | |
|   let thirdLoaded = false
 | |
| 
 | |
|   app.use(first)
 | |
|   app.use(third)
 | |
| 
 | |
|   function first (s, opts, done) {
 | |
|     t.notOk(firstLoaded, 'first is not loaded')
 | |
|     t.notOk(secondLoaded, 'second is not loaded')
 | |
|     t.notOk(thirdLoaded, 'third is not loaded')
 | |
|     firstLoaded = true
 | |
|     s.use(second)
 | |
|     done()
 | |
|   }
 | |
| 
 | |
|   function second (s, opts, done) {
 | |
|     t.ok(firstLoaded, 'first is loaded')
 | |
|     t.notOk(secondLoaded, 'second is not loaded')
 | |
|     t.notOk(thirdLoaded, 'third is not loaded')
 | |
|     secondLoaded = true
 | |
|     done()
 | |
|   }
 | |
| 
 | |
|   function third (s, opts, done) {
 | |
|     t.ok(firstLoaded, 'first is loaded')
 | |
|     t.ok(secondLoaded, 'second is loaded')
 | |
|     t.notOk(thirdLoaded, 'third is not loaded')
 | |
|     thirdLoaded = true
 | |
|     done()
 | |
|   }
 | |
| 
 | |
|   app.on('start', () => {
 | |
|     t.ok(firstLoaded, 'first is loaded')
 | |
|     t.ok(secondLoaded, 'second is loaded')
 | |
|     t.ok(thirdLoaded, 'third is loaded')
 | |
|     t.pass('booted')
 | |
|   })
 | |
| })
 | |
| 
 | |
| test('multiple reentrant plugin loading', (t) => {
 | |
|   t.plan(31)
 | |
| 
 | |
|   const app = boot()
 | |
|   let firstLoaded = false
 | |
|   let secondLoaded = false
 | |
|   let thirdLoaded = false
 | |
|   let fourthLoaded = false
 | |
|   let fifthLoaded = false
 | |
| 
 | |
|   app.use(first)
 | |
|   app.use(fifth)
 | |
| 
 | |
|   function first (s, opts, done) {
 | |
|     t.notOk(firstLoaded, 'first is not loaded')
 | |
|     t.notOk(secondLoaded, 'second is not loaded')
 | |
|     t.notOk(thirdLoaded, 'third is not loaded')
 | |
|     t.notOk(fourthLoaded, 'fourth is not loaded')
 | |
|     t.notOk(fifthLoaded, 'fifth is not loaded')
 | |
|     firstLoaded = true
 | |
|     s.use(second)
 | |
|     done()
 | |
|   }
 | |
| 
 | |
|   function second (s, opts, done) {
 | |
|     t.ok(firstLoaded, 'first is loaded')
 | |
|     t.notOk(secondLoaded, 'second is not loaded')
 | |
|     t.notOk(thirdLoaded, 'third is not loaded')
 | |
|     t.notOk(fourthLoaded, 'fourth is not loaded')
 | |
|     t.notOk(fifthLoaded, 'fifth is not loaded')
 | |
|     secondLoaded = true
 | |
|     s.use(third)
 | |
|     s.use(fourth)
 | |
|     done()
 | |
|   }
 | |
| 
 | |
|   function third (s, opts, done) {
 | |
|     t.ok(firstLoaded, 'first is loaded')
 | |
|     t.ok(secondLoaded, 'second is loaded')
 | |
|     t.notOk(thirdLoaded, 'third is not loaded')
 | |
|     t.notOk(fourthLoaded, 'fourth is not loaded')
 | |
|     t.notOk(fifthLoaded, 'fifth is not loaded')
 | |
|     thirdLoaded = true
 | |
|     done()
 | |
|   }
 | |
| 
 | |
|   function fourth (s, opts, done) {
 | |
|     t.ok(firstLoaded, 'first is loaded')
 | |
|     t.ok(secondLoaded, 'second is loaded')
 | |
|     t.ok(thirdLoaded, 'third is loaded')
 | |
|     t.notOk(fourthLoaded, 'fourth is not loaded')
 | |
|     t.notOk(fifthLoaded, 'fifth is not loaded')
 | |
|     fourthLoaded = true
 | |
|     done()
 | |
|   }
 | |
| 
 | |
|   function fifth (s, opts, done) {
 | |
|     t.ok(firstLoaded, 'first is loaded')
 | |
|     t.ok(secondLoaded, 'second is loaded')
 | |
|     t.ok(thirdLoaded, 'third is loaded')
 | |
|     t.ok(fourthLoaded, 'fourth is loaded')
 | |
|     t.notOk(fifthLoaded, 'fifth is not loaded')
 | |
|     fifthLoaded = true
 | |
|     done()
 | |
|   }
 | |
| 
 | |
|   app.on('start', () => {
 | |
|     t.ok(firstLoaded, 'first is loaded')
 | |
|     t.ok(secondLoaded, 'second is loaded')
 | |
|     t.ok(thirdLoaded, 'third is loaded')
 | |
|     t.ok(fourthLoaded, 'fourth is loaded')
 | |
|     t.ok(fifthLoaded, 'fifth is loaded')
 | |
|     t.pass('booted')
 | |
|   })
 | |
| })
 |