forked from zhurui/management
126 lines
3.0 KiB
JavaScript
126 lines
3.0 KiB
JavaScript
|
'use strict'
|
||
|
|
||
|
const assert = require('chai').assert
|
||
|
const proxyquire = require('proxyquire')
|
||
|
const spooks = require('spooks')
|
||
|
const Promise = require('bluebird')
|
||
|
|
||
|
const modulePath = '../../src/unpipe'
|
||
|
|
||
|
suite('unpipe:', () => {
|
||
|
test('require does not throw', () => {
|
||
|
assert.doesNotThrow(() => {
|
||
|
require(modulePath)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('require returns function', () => {
|
||
|
assert.isFunction(require(modulePath))
|
||
|
})
|
||
|
|
||
|
suite('require:', () => {
|
||
|
let log, results, unpipe
|
||
|
|
||
|
setup(() => {
|
||
|
log = {}
|
||
|
results = {
|
||
|
parse: [ Promise.resolve() ]
|
||
|
}
|
||
|
unpipe = proxyquire(modulePath, {
|
||
|
'./parse': spooks.fn({
|
||
|
name: 'parse',
|
||
|
log: log,
|
||
|
results: results.parse
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('unpipe expects two arguments', () => {
|
||
|
assert.lengthOf(unpipe, 2)
|
||
|
})
|
||
|
|
||
|
test('unpipe does not throw', () => {
|
||
|
assert.doesNotThrow(() => {
|
||
|
unpipe(() => {})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('unpipe throws if callback is not provided', () => {
|
||
|
assert.throws(() => {
|
||
|
unpipe()
|
||
|
})
|
||
|
})
|
||
|
|
||
|
test('parse was not called', () => {
|
||
|
assert.strictEqual(log.counts.parse, 0)
|
||
|
})
|
||
|
|
||
|
suite('unpipe success:', () => {
|
||
|
let result, error, options
|
||
|
|
||
|
setup(done => {
|
||
|
results.parse[0] = Promise.resolve('foo')
|
||
|
options = { foo: 'bar', ndjson: true }
|
||
|
unpipe((err, res) => {
|
||
|
error = err
|
||
|
result = res
|
||
|
done()
|
||
|
}, options)
|
||
|
})
|
||
|
|
||
|
test('parse was called once', () => {
|
||
|
assert.strictEqual(log.counts.parse, 1)
|
||
|
})
|
||
|
|
||
|
test('parse was called correctly', () => {
|
||
|
assert.isUndefined(log.these.parse[0])
|
||
|
assert.lengthOf(log.args.parse[0], 2)
|
||
|
assert.isObject(log.args.parse[0][0])
|
||
|
assert.isTrue(log.args.parse[0][0].readable)
|
||
|
assert.isTrue(log.args.parse[0][0].writable)
|
||
|
assert.isFunction(log.args.parse[0][0].pipe)
|
||
|
assert.isFunction(log.args.parse[0][0].read)
|
||
|
assert.isFunction(log.args.parse[0][0]._read)
|
||
|
assert.isFunction(log.args.parse[0][0].write)
|
||
|
assert.isFunction(log.args.parse[0][0]._write)
|
||
|
assert.notStrictEqual(log.args.parse[0][1], options)
|
||
|
assert.deepEqual(log.args.parse[0][1], { foo: 'bar', ndjson: false })
|
||
|
})
|
||
|
|
||
|
test('parse result was returned', () => {
|
||
|
assert.strictEqual(result, 'foo')
|
||
|
})
|
||
|
|
||
|
test('did not fail', () => {
|
||
|
assert.isNull(error)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
suite('unpipe error:', () => {
|
||
|
let result, error, options
|
||
|
|
||
|
setup(done => {
|
||
|
results.parse[0] = Promise.reject('bar')
|
||
|
options = {}
|
||
|
unpipe((err, res) => {
|
||
|
error = err
|
||
|
result = res
|
||
|
done()
|
||
|
}, options)
|
||
|
})
|
||
|
|
||
|
test('parse was called once', () => {
|
||
|
assert.strictEqual(log.counts.parse, 1)
|
||
|
})
|
||
|
|
||
|
test('parse result was not returned', () => {
|
||
|
assert.isUndefined(result)
|
||
|
})
|
||
|
|
||
|
test('failed', () => {
|
||
|
assert.strictEqual(error, 'bar')
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
})
|