1.0.2 • Published 3 years ago

duckfficer-method-di v1.0.2

Weekly downloads
7
License
MIT
Repository
github
Last release
3 years ago

Installation

$ npm i duckfficer-method-di --save
# or
$ yarn add duckfficer-method-di

Features

builds an object appending all method found in given paths

const container = duckfficerMethodDi({
  Gateway: 'gateways',
  Service: 'services'
}, {
  baseDir: path.join(__dirname, './__tests__/fixtures')
})

const { OrderService } = container
t.deepEqual(await OrderService.payment({
  id: '123',
  amount: 99
}), {
  id: '123',
  result: 'paying 99$'
})

validates input

const container = duckfficerMethodDi({
  Gateway: 'gateways',
  Service: 'services'
}, {
  baseDir: path.join(__dirname, './__tests__/fixtures')
})

const { PayPalGateway } = container
const { originalError } = await t.throwsAsync(() => PayPalGateway.pay('100'), {
  message: 'Invalid input'
})
t.like(originalError, {
  message: 'Invalid number'
})

validates output

const container = duckfficerMethodDi({
  Gateway: 'gateways',
  Service: 'services'
}, {
  baseDir: path.join(__dirname, './__tests__/fixtures')
})

const { PayPalGateway } = container

const { originalError } = await t.throwsAsync(() => PayPalGateway.pay(0), {
  message: 'Invalid output'
})

t.like(originalError, {
  message: 'Invalid string'
})

emits events

const container = duckfficerMethodDi({
  Gateway: 'gateways',
  Service: 'services'
}, {
  baseDir: path.join(__dirname, './__tests__/fixtures')
})

const { PayPalGateway } = container

PayPalGateway.on('Paid', (payload) => {
  t.log(payload)
  t.pass()
})

return PayPalGateway.pay(100)

duckfficerMethodDi(pathResolvers, baseDir, methodsPath) ⇒ Object

ParamTypeDefault
pathResolversObject
baseDirStringprocess.cwd()
methodsPathStringmethods

Returns: Object - container


License

MIT

© 2020-present Martin Rafael Gonzalez tin@devtin.io