jeffijoe/awilix

View on GitHub
src/__tests__/list-modules.test.ts

Summary

Maintainability
B
4 hrs
Test Coverage
import { listModules } from '../list-modules'

describe('listModules', () => {
  it('can find the modules in lib', () => {
    const result = listModules('../*.ts', { cwd: __dirname })
    expect(result.some((x) => x.name === 'container')).toBeTruthy()
  })

  it('replaces Windows path separators with Posix path separators', () => {
    const result = listModules('..\\*.ts', { cwd: __dirname })
    expect(result.some((x) => x.name === 'container')).toBeTruthy()
  })

  it('can find the modules in src without cwd', () => {
    const result = listModules('src/*.ts')
    expect(result.some((x) => x.name === 'container')).toBeTruthy()
  })

  it('handles dots in module names', () => {
    const result = listModules('*.{ts,js}', { cwd: __dirname })
    expect(result.find((x) => x.name === 'container.test')).toBeDefined()
  })

  it('returns a path', () => {
    const result = listModules('../*.ts', { cwd: __dirname })
    const createContainerModule = result.find((x) => x.name === 'container')!
    expect(createContainerModule.name).toBe('container')
    expect(createContainerModule.path).toContain('container.ts')
  })

  it('supports an array of globs', () => {
    const result = listModules(['src/*.ts'])
    const createContainerModule = result.find((x) => x.name === 'container')!
    expect(createContainerModule.name).toBe('container')
    expect(createContainerModule.path).toContain('container.ts')
  })

  it('supports array-opts syntax', () => {
    const opts = { value: 'yep' }
    const result = listModules([['src/*.ts', opts as any]])

    const createContainerModule = result.find((x) => x.name === 'container')!
    expect(createContainerModule.name).toBe('container')
    expect(createContainerModule.path).toContain('container.ts')
    expect(createContainerModule.opts).toEqual(opts)
  })
})