source: frontend/node_modules/bfj/test/unit/unpipe.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 13 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 3.0 KB
Line 
1'use strict'
2
3const assert = require('chai').assert
4const proxyquire = require('proxyquire')
5const spooks = require('spooks')
6const Promise = require('bluebird')
7
8const modulePath = '../../src/unpipe'
9
10suite('unpipe:', () => {
11 test('require does not throw', () => {
12 assert.doesNotThrow(() => {
13 require(modulePath)
14 })
15 })
16
17 test('require returns function', () => {
18 assert.isFunction(require(modulePath))
19 })
20
21 suite('require:', () => {
22 let log, results, unpipe
23
24 setup(() => {
25 log = {}
26 results = {
27 parse: [ Promise.resolve() ]
28 }
29 unpipe = proxyquire(modulePath, {
30 './parse': spooks.fn({
31 name: 'parse',
32 log: log,
33 results: results.parse
34 })
35 })
36 })
37
38 test('unpipe expects two arguments', () => {
39 assert.lengthOf(unpipe, 2)
40 })
41
42 test('unpipe does not throw', () => {
43 assert.doesNotThrow(() => {
44 unpipe(() => {})
45 })
46 })
47
48 test('unpipe throws if callback is not provided', () => {
49 assert.throws(() => {
50 unpipe()
51 })
52 })
53
54 test('parse was not called', () => {
55 assert.strictEqual(log.counts.parse, 0)
56 })
57
58 suite('unpipe success:', () => {
59 let result, error, options
60
61 setup(done => {
62 results.parse[0] = Promise.resolve('foo')
63 options = { foo: 'bar', ndjson: true }
64 unpipe((err, res) => {
65 error = err
66 result = res
67 done()
68 }, options)
69 })
70
71 test('parse was called once', () => {
72 assert.strictEqual(log.counts.parse, 1)
73 })
74
75 test('parse was called correctly', () => {
76 assert.isUndefined(log.these.parse[0])
77 assert.lengthOf(log.args.parse[0], 2)
78 assert.isObject(log.args.parse[0][0])
79 assert.isTrue(log.args.parse[0][0].readable)
80 assert.isTrue(log.args.parse[0][0].writable)
81 assert.isFunction(log.args.parse[0][0].pipe)
82 assert.isFunction(log.args.parse[0][0].read)
83 assert.isFunction(log.args.parse[0][0]._read)
84 assert.isFunction(log.args.parse[0][0].write)
85 assert.isFunction(log.args.parse[0][0]._write)
86 assert.notStrictEqual(log.args.parse[0][1], options)
87 assert.deepEqual(log.args.parse[0][1], { foo: 'bar', ndjson: false })
88 })
89
90 test('parse result was returned', () => {
91 assert.strictEqual(result, 'foo')
92 })
93
94 test('did not fail', () => {
95 assert.isNull(error)
96 })
97 })
98
99 suite('unpipe error:', () => {
100 let result, error, options
101
102 setup(done => {
103 results.parse[0] = Promise.reject('bar')
104 options = {}
105 unpipe((err, res) => {
106 error = err
107 result = res
108 done()
109 }, options)
110 })
111
112 test('parse was called once', () => {
113 assert.strictEqual(log.counts.parse, 1)
114 })
115
116 test('parse result was not returned', () => {
117 assert.isUndefined(result)
118 })
119
120 test('failed', () => {
121 assert.strictEqual(error, 'bar')
122 })
123 })
124 })
125})
Note: See TracBrowser for help on using the repository browser.