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