1 | var assert = require('chai').assert
|
2 | , util = require('util')
|
3 | , Console = require('../lib/console')
|
4 |
|
5 | var logs = { log: [], warn: [], error: [] }
|
6 | , logger = { log: makeLogger(logs.log)
|
7 | , warn: makeLogger(logs.warn)
|
8 | , error: makeLogger(logs.error)
|
9 | }
|
10 |
|
11 | var c = new Console(logger)
|
12 | resetLogs()
|
13 |
|
14 | assert.equal(logs.log.length, 0)
|
15 | assert.equal(logs.warn.length, 0)
|
16 | assert.equal(logs.error.length, 0)
|
17 |
|
18 | resetLogs()
|
19 | c.Alert('ze message')
|
20 | assertLogged('log', /\[OKAY\]/)
|
21 | assertLogged('log', /ze message/)
|
22 |
|
23 | resetLogs()
|
24 | c.Done('ze message')
|
25 | assertLogged('log', /\[DONE\]/)
|
26 | assertLogged('log', /ze message/)
|
27 |
|
28 | resetLogs()
|
29 | c.Warn('ze warning')
|
30 | assertLogged('warn', /\[WARN\]/)
|
31 | assertLogged('warn', /ze warning/)
|
32 |
|
33 | resetLogs()
|
34 | c.Error('such an error')
|
35 | assertLogged('error', /\[FAIL\]/)
|
36 | assertLogged('error', /such an error/)
|
37 |
|
38 | assert.lengthOf(c.trim('a very long string this is!', 5), 6)
|
39 |
|
40 | function makeLogger(collector) {
|
41 | return function() {
|
42 | collector.push(util.format.apply(util, arguments))
|
43 | }
|
44 | }
|
45 |
|
46 | function 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 |
|
52 | function 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 | }
|