1 |
|
2 | e = require 'expect.js'
|
3 | moment = require 'moment'
|
4 | path = require 'path'
|
5 |
|
6 | describe 'Pattern Tools', ->
|
7 | pat = require '../lib/pattern'
|
8 | describe 'compile', ->
|
9 | it 'simple string', ->
|
10 | render = pat.compile 'simple'
|
11 | e(render()).to.be 'simple'
|
12 | it 'with vars', ->
|
13 | render = pat.compile 'simple {var1} simple'
|
14 | e(render({var1:'vars'})).to.be 'simple vars simple'
|
15 | it 'with time', ->
|
16 | for k in ['now', 'time', 'date', 'fulltime', 'numbertime', 'mstimestamp', 'timestamp']
|
17 | render = pat.compile 'simple {' + k + '} simple'
|
18 | e(render.time).to.be true
|
19 | it 'with trace stack', ->
|
20 | for k in ['file', 'lineno', 'stack', 'stackColored']
|
21 | render = pat.compile 'simple {' + k + '} simple'
|
22 | e(render.stack).to.be true
|
23 |
|
24 | describe 'format', ->
|
25 | describe 'basic', ->
|
26 | it 'no vars', ->
|
27 | render = pat.compile 'no vars'
|
28 | e(pat.format render, null, 1).to.be 'no vars\n'
|
29 | it 'object vars', ->
|
30 | render = pat.compile 'object vars {foo}'
|
31 | e(pat.format render, {foo:'bar'}, 1).to.be 'object vars bar\n'
|
32 | it 'object vars and subvars', ->
|
33 | render = pat.compile 'object vars {foo} {foo1.bar1}'
|
34 | e(pat.format render, {foo:'bar', foo1:bar1:'bar1'}, 1).to.be 'object vars bar bar1\n'
|
35 | it 'call function with const', ->
|
36 | render = pat.compile 'object vars {foo "123"} {foo 456} {foo \'789\'} {foo true}'
|
37 | e(pat.format render, {foo:(v)->v}, 1).to.be 'object vars 123 456 789 true\n'
|
38 | it 'call function with vars', ->
|
39 | render = pat.compile 'object vars {foo bar}'
|
40 | e(pat.format render, {foo:((v)->v), bar:123}, 1).to.be 'object vars 123\n'
|
41 | describe 'predefines', ->
|
42 | it 'level text colored and message', ->
|
43 | render = pat.compile 'simple colored {color.level level} {msg}'
|
44 | e(pat.format render, 'msg', 2).to.be 'simple colored \x1b[36mDEBUG\x1b[0m msg\n'
|
45 | it 'with predefined time', ->
|
46 | render = pat.compile 'simple colored {time} {msg}'
|
47 | el = new Date()
|
48 | el.setSeconds(el.getSeconds() - 1)
|
49 | lt = new Date()
|
50 | lt.setSeconds(lt.getSeconds() + 1)
|
51 | early = "simple colored #{moment(el).format 'HH:mm:ss'} msg\n"
|
52 | later = "simple colored #{moment(lt).format 'HH:mm:ss'} msg\n"
|
53 | e(pat.format render, 'msg', 4).to.above early
|
54 | e(pat.format render, 'msg', 4).to.below later
|
55 | it 'with custom time', ->
|
56 | render = pat.compile 'simple colored {now \'HH:mm:ss\'} {msg}'
|
57 | el = new Date()
|
58 | el.setSeconds(el.getSeconds() - 1)
|
59 | lt = new Date()
|
60 | lt.setSeconds(lt.getSeconds() + 1)
|
61 | early = "simple colored #{moment(el).format 'HH:mm:ss'} msg\n"
|
62 | later = "simple colored #{moment(lt).format 'HH:mm:ss'} msg\n"
|
63 | e(pat.format render, 'msg', 4).to.above early
|
64 | e(pat.format render, 'msg', 4).to.below later
|
65 | it 'tracestack', ->
|
66 | render = pat.compile 'simple colored {stack} {msg}'
|
67 | e(pat.format render, 'msg', 4).to.match /simple colored (out\/test\/)?tests\/test-pattern\.(js|coffee):\d+ msg\n/
|
68 | it 'trace stack with inline code', ->
|
69 | render = pat.compile 'simple colored {stack} {msg}'
|
70 | checkReg = /simple colored (out\/test\/)?tests\/test-pattern\.(js|coffee):\d+ msg\n/
|
71 | new Function('e', 'pat', 'render', 'checkReg', "e(pat.format(render, 'msg', 8)).to.match(checkReg);")(e, pat, render, checkReg);
|
72 |
|