Name: js-handler/node_modules/restify/node_modules/bunyan/test/raw-stream.test.js 
1:
/*
2:
 * Copyright (c) 2012 Trent Mick. All rights reserved.
3:
 *
4:
 * Test `type: 'raw'` Logger streams.
5:
 */
6:
 
7:
var format = require('util').format;
8:
var Logger = require('../lib/bunyan');
9:
 
10:
// node-tap API
11:
if (require.cache[__dirname + '/tap4nodeunit.js'])
12:
        delete require.cache[__dirname + '/tap4nodeunit.js'];
13:
var tap4nodeunit = require('./tap4nodeunit.js');
14:
var after = tap4nodeunit.after;
15:
var before = tap4nodeunit.before;
16:
var test = tap4nodeunit.test;
17:
 
18:
 
19:
function CapturingStream(recs) {
20:
    this.recs = recs;
21:
}
22:
CapturingStream.prototype.write = function (rec) {
23:
    this.recs.push(rec);
24:
}
25:
 
26:
 
27:
test('raw stream', function (t) {
28:
    var recs = [];
29:
 
30:
    var log = new Logger({
31:
        name: 'raw-stream-test',
32:
        streams: [
33:
            {
34:
                stream: new CapturingStream(recs),
35:
                type: 'raw'
36:
            }
37:
        ]
38:
    });
39:
    log.info('first');
40:
    log.info({two: 'deux'}, 'second');
41:
 
42:
    t.equal(recs.length, 2);
43:
    t.equal(typeof (recs[0]), 'object', 'first rec is an object');
44:
    t.equal(recs[1].two, 'deux', '"two" field made it through');
45:
    t.end();
46:
});
47:
 
48:
 
49:
test('raw streams and regular streams can mix', function (t) {
50:
    var rawRecs = [];
51:
    var nonRawRecs = [];
52:
 
53:
    var log = new Logger({
54:
        name: 'raw-stream-test',
55:
        streams: [
56:
            {
57:
                stream: new CapturingStream(rawRecs),
58:
                type: 'raw'
59:
            },
60:
            {
61:
                stream: new CapturingStream(nonRawRecs)
62:
            }
63:
        ]
64:
    });
65:
    log.info('first');
66:
    log.info({two: 'deux'}, 'second');
67:
 
68:
    t.equal(rawRecs.length, 2);
69:
    t.equal(typeof (rawRecs[0]), 'object', 'first rawRec is an object');
70:
    t.equal(rawRecs[1].two, 'deux', '"two" field made it through');
71:
 
72:
    t.equal(nonRawRecs.length, 2);
73:
    t.equal(typeof (nonRawRecs[0]), 'string', 'first nonRawRec is a string');
74:
 
75:
    t.end();
76:
});
77:
 
78:
 
79:
test('child adding a non-raw stream works', function (t) {
80:
    var parentRawRecs = [];
81:
    var rawRecs = [];
82:
    var nonRawRecs = [];
83:
 
84:
    var logParent = new Logger({
85:
        name: 'raw-stream-test',
86:
        streams: [
87:
            {
88:
                stream: new CapturingStream(parentRawRecs),
89:
                type: 'raw'
90:
            }
91:
        ]
92:
    });
93:
    var logChild = logParent.child({
94:
        child: true,
95:
        streams: [
96:
            {
97:
                stream: new CapturingStream(rawRecs),
98:
                type: 'raw'
99:
            },
100:
            {
101:
                stream: new CapturingStream(nonRawRecs)
102:
            }
103:
        ]
104:
    });
105:
    logParent.info('first');
106:
    logChild.info({two: 'deux'}, 'second');
107:
 
108:
    t.equal(rawRecs.length, 1,
109:
        format('rawRecs length should be 1 (is %d)', rawRecs.length));
110:
    t.equal(typeof (rawRecs[0]), 'object', 'rawRec entry is an object');
111:
    t.equal(rawRecs[0].two, 'deux', '"two" field made it through');
112:
 
113:
    t.equal(nonRawRecs.length, 1);
114:
    t.equal(typeof (nonRawRecs[0]), 'string', 'first nonRawRec is a string');
115:
 
116:
    t.end();
117:
});