strong-tie/inbound-calls
0
1'use strict'2 3const { test } = require('tap')4const boot = require('..')5 6test('one level', (t) => {7 t.plan(13)8 9 const app = boot()10 let firstLoaded = false11 let secondLoaded = false12 let thirdLoaded = false13 14 app.use(first)15 app.use(third)16 17 function first (s, opts, done) {18 t.notOk(firstLoaded, 'first is not loaded')19 t.notOk(secondLoaded, 'second is not loaded')20 t.notOk(thirdLoaded, 'third is not loaded')21 firstLoaded = true22 s.use(second)23 done()24 }25 26 function second (s, opts, done) {27 t.ok(firstLoaded, 'first is loaded')28 t.notOk(secondLoaded, 'second is not loaded')29 t.notOk(thirdLoaded, 'third is not loaded')30 secondLoaded = true31 done()32 }33 34 function third (s, opts, done) {35 t.ok(firstLoaded, 'first is loaded')36 t.ok(secondLoaded, 'second is loaded')37 t.notOk(thirdLoaded, 'third is not loaded')38 thirdLoaded = true39 done()40 }41 42 app.on('start', () => {43 t.ok(firstLoaded, 'first is loaded')44 t.ok(secondLoaded, 'second is loaded')45 t.ok(thirdLoaded, 'third is loaded')46 t.pass('booted')47 })48})49 50test('multiple reentrant plugin loading', (t) => {51 t.plan(31)52 53 const app = boot()54 let firstLoaded = false55 let secondLoaded = false56 let thirdLoaded = false57 let fourthLoaded = false58 let fifthLoaded = false59 60 app.use(first)61 app.use(fifth)62 63 function first (s, opts, done) {64 t.notOk(firstLoaded, 'first is not loaded')65 t.notOk(secondLoaded, 'second is not loaded')66 t.notOk(thirdLoaded, 'third is not loaded')67 t.notOk(fourthLoaded, 'fourth is not loaded')68 t.notOk(fifthLoaded, 'fifth is not loaded')69 firstLoaded = true70 s.use(second)71 done()72 }73 74 function second (s, opts, done) {75 t.ok(firstLoaded, 'first is loaded')76 t.notOk(secondLoaded, 'second is not loaded')77 t.notOk(thirdLoaded, 'third is not loaded')78 t.notOk(fourthLoaded, 'fourth is not loaded')79 t.notOk(fifthLoaded, 'fifth is not loaded')80 secondLoaded = true81 s.use(third)82 s.use(fourth)83 done()84 }85 86 function third (s, opts, done) {87 t.ok(firstLoaded, 'first is loaded')88 t.ok(secondLoaded, 'second is loaded')89 t.notOk(thirdLoaded, 'third is not loaded')90 t.notOk(fourthLoaded, 'fourth is not loaded')91 t.notOk(fifthLoaded, 'fifth is not loaded')92 thirdLoaded = true93 done()94 }95 96 function fourth (s, opts, done) {97 t.ok(firstLoaded, 'first is loaded')98 t.ok(secondLoaded, 'second is loaded')99 t.ok(thirdLoaded, 'third is loaded')100 t.notOk(fourthLoaded, 'fourth is not loaded')101 t.notOk(fifthLoaded, 'fifth is not loaded')102 fourthLoaded = true103 done()104 }105 106 function fifth (s, opts, done) {107 t.ok(firstLoaded, 'first is loaded')108 t.ok(secondLoaded, 'second is loaded')109 t.ok(thirdLoaded, 'third is loaded')110 t.ok(fourthLoaded, 'fourth is loaded')111 t.notOk(fifthLoaded, 'fifth is not loaded')112 fifthLoaded = true113 done()114 }115 116 app.on('start', () => {117 t.ok(firstLoaded, 'first is loaded')118 t.ok(secondLoaded, 'second is loaded')119 t.ok(thirdLoaded, 'third is loaded')120 t.ok(fourthLoaded, 'fourth is loaded')121 t.ok(fifthLoaded, 'fifth is loaded')122 t.pass('booted')123 })124})125 