UNPKG

1.42 kBJavaScriptView Raw
1var assert = require('chai').assert
2 , util = require('util')
3 , Console = require('../lib/console')
4
5var logs = { log: [], warn: [], error: [] }
6 , logger = { log: makeLogger(logs.log)
7 , warn: makeLogger(logs.warn)
8 , error: makeLogger(logs.error)
9 }
10
11var c = new Console(logger)
12resetLogs()
13
14assert.equal(logs.log.length, 0)
15assert.equal(logs.warn.length, 0)
16assert.equal(logs.error.length, 0)
17
18resetLogs()
19c.Alert('ze message')
20assertLogged('log', /\[OKAY\]/)
21assertLogged('log', /ze message/)
22
23resetLogs()
24c.Done('ze message')
25assertLogged('log', /\[DONE\]/)
26assertLogged('log', /ze message/)
27
28resetLogs()
29c.Warn('ze warning')
30assertLogged('warn', /\[WARN\]/)
31assertLogged('warn', /ze warning/)
32
33resetLogs()
34c.Error('such an error')
35assertLogged('error', /\[FAIL\]/)
36assertLogged('error', /such an error/)
37
38assert.lengthOf(c.trim('a very long string this is!', 5), 6)
39
40function makeLogger(collector) {
41 return function() {
42 collector.push(util.format.apply(util, arguments))
43 }
44}
45
46function resetLogs() {
47 logs.log.splice(0, logs.log.length)
48 logs.warn.splice(0, logs.warn.length)
49 logs.error.splice(0, logs.error.length)
50}
51
52function assertLogged(logName, pattern) {
53 var actual = logs[logName][logs[logName].length - 1]
54
55 Object.keys(logs).forEach(function (log) {
56 assert.lengthOf(logs[log], logName === log ? 1 : 0)
57 })
58
59 assert.match(actual, pattern)
60}