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.
 
 
 

95 lines
2.1 KiB

'use strict'
const assert = require('chai').assert
const spooks = require('spooks')
const modulePath = '../../src/jsonstream'
suite('jsonstream:', () => {
let log
setup(() => {
log = {}
})
test('require does not throw', () => {
assert.doesNotThrow(() => {
require(modulePath)
})
})
test('require returns function', () => {
assert.isFunction(require(modulePath))
})
suite('require:', () => {
let Stream
setup(() => {
Stream = require(modulePath)
})
test('Stream expects two arguments', () => {
assert.lengthOf(Stream, 2)
})
test('calling Stream with function argument doesNotThrow', () => {
assert.doesNotThrow(() => {
Stream(() => {})
})
})
test('calling Stream with object argument throws', () => {
assert.throws(() => {
Stream({ read: () => {} })
})
})
test('calling Stream with new returns Stream instance', () => {
assert.instanceOf(new Stream(() => {}), Stream)
})
test('calling Stream with new returns Readable instance', () => {
assert.instanceOf(new Stream(() => {}), require('stream').Readable)
})
test('calling Stream without new returns Stream instance', () => {
assert.instanceOf(Stream(() => {}), Stream)
})
suite('instantiate:', () => {
let jsonstream
setup(() => {
jsonstream = new Stream(spooks.fn({ name: 'read', log: log }))
})
test('jsonstream has _read method', () => {
assert.isFunction(jsonstream._read)
})
test('_read expects no arguments', () => {
assert.lengthOf(jsonstream._read, 0)
})
test('read was not called', () => {
assert.strictEqual(log.counts.read, 0)
})
suite('jsonstream._read:', () => {
setup(() => {
jsonstream._read()
})
test('read was called once', () => {
assert.strictEqual(log.counts.read, 1)
assert.isUndefined(log.these.read[0])
})
test('read was called correctly', () => {
assert.lengthOf(log.args.read[0], 0)
})
})
})
})
})