h2non/resolve-tree

View on GitHub
test.js

Summary

Maintainability
C
1 day
Test Coverage
const test = require('tape')
const resolve = require('./')

function resolveSimple (assert) {
  const pkgs = ['foo']
  const opts = { basedir: __dirname + '/fixtures/simple' }
  resolve.packages(pkgs, opts, assert)
}

test('find', function (t) {
  t.plan(10)

  resolveSimple(function assert (err, deps) {
    t.equal(err, null)
    t.equal(deps.length, 1)

    const foo = deps.shift()
    t.equal(foo.name, 'foo')
    t.equal(typeof foo.manifest, 'string')
    t.equal(typeof foo.basedir, 'string')
    t.equal(typeof foo.main, 'string')
    t.equal(typeof foo.root, 'string')

    t.equal(foo.meta.name, 'foo')
    t.equal(typeof foo.meta.dependencies, 'object')
    t.equal(foo.dependencies.length, 3)
  })
})

test('manifest', function (t) {
  t.plan(10)

  const manifest = require(__dirname + '/fixtures/simple/package.json')
  const opts = { basedir: __dirname + '/fixtures/simple' }

  resolve.manifest(manifest, opts, function assert (err, deps) {
    t.equal(err, null)
    t.equal(deps.length, 1)

    const foo = deps.shift()
    t.equal(foo.name, 'foo')
    t.equal(typeof foo.manifest, 'string')
    t.equal(typeof foo.basedir, 'string')
    t.equal(typeof foo.main, 'string')
    t.equal(typeof foo.root, 'string')

    t.equal(foo.meta.name, 'foo')
    t.equal(typeof foo.meta.dependencies, 'object')
    t.equal(foo.dependencies.length, 3)
  })
})

test('optional dependencies', function (t) {
  t.plan(14)

  const manifest = require(__dirname + '/fixtures/optional/package.json')
  const opts = {
    lookups: ['dependencies', 'optionalDependencies'],
    basedir: __dirname + '/fixtures/optional'
  }

  resolve.manifest(manifest, opts, function assert (err, deps) {
    t.equal(err, null)
    t.equal(deps.length, 3)

    const foo = deps.shift()
    t.equal(foo.name, 'foo')
    t.equal(typeof foo.manifest, 'string')
    t.equal(typeof foo.basedir, 'string')
    t.equal(typeof foo.main, 'string')
    t.equal(typeof foo.root, 'string')
    t.equal(foo.meta.name, 'foo')

    const optional = deps.shift()
    t.equal(optional.name, 'optional')
    t.equal(typeof optional.manifest, 'string')
    t.equal(typeof optional.basedir, 'string')
    t.equal(typeof optional.main, 'string')
    t.equal(typeof optional.root, 'string')
    t.equal(optional.meta.name, 'optional')
  })
})

test('flatten', function (t) {
  t.plan(2)

  resolveSimple(function assert (err, deps) {
    t.equal(err, null)
    const list = resolve.flatten(deps)
    t.equal(list.length, 6)
  })
})

test('flattenMap', function (t) {
  t.plan(3)

  resolveSimple(function assert (err, deps) {
    t.equal(err, null)

    const list = resolve.flattenMap(deps)
    t.equal(list.length, 6)
    t.equal(typeof list.shift(), 'string')
  })
})