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.

121 lines
2.2 KiB

3 years ago
'use strict'
const { test } = require('tap')
const fp = require('../plugin')
test('webpack removes require.main.filename', (t) => {
const filename = require.main.filename
const info = console.info
t.teardown(() => {
require.main.filename = filename
console.info = info
})
require.main.filename = null
console.info = function (msg) {
t.fail('logged: ' + msg)
}
fp((fastify, opts, next) => {
next()
}, {
fastify: '^4.0.0'
})
t.end()
})
test('support faux modules', (t) => {
const plugin = fp((fastify, opts, next) => {
next()
})
t.equal(plugin.default, plugin)
t.end()
})
test('support faux modules does not override existing default field in babel module', (t) => {
const module = {
default: (fastify, opts, next) => next()
}
module.default.default = 'Existing default field'
const plugin = fp(module)
t.equal(plugin.default, 'Existing default field')
t.end()
})
test('support ts named imports', (t) => {
const plugin = fp((fastify, opts, next) => {
next()
}, {
name: 'hello'
})
t.equal(plugin.hello, plugin)
t.end()
})
test('from kebab-case to camelCase', (t) => {
const plugin = fp((fastify, opts, next) => {
next()
}, {
name: 'hello-world'
})
t.equal(plugin.helloWorld, plugin)
t.end()
})
test('from @-prefixed named imports', (t) => {
const plugin = fp((fastify, opts, next) => {
next()
}, {
name: '@hello/world'
})
t.equal(plugin.helloWorld, plugin)
t.end()
})
test('from @-prefixed named kebab-case to camelCase', (t) => {
const plugin = fp((fastify, opts, next) => {
next()
}, {
name: '@hello/my-world'
})
t.equal(plugin.helloMyWorld, plugin)
t.end()
})
test('from kebab-case to camelCase multiple words', (t) => {
const plugin = fp((fastify, opts, next) => {
next()
}, {
name: 'hello-long-world'
})
t.equal(plugin.helloLongWorld, plugin)
t.end()
})
test('from kebab-case to camelCase multiple words does not override', (t) => {
const fn = (fastify, opts, next) => {
next()
}
const foobar = {}
fn.helloLongWorld = foobar
const plugin = fp(fn, {
name: 'hello-long-world'
})
t.equal(plugin.helloLongWorld, foobar)
t.end()
})