UNPKG

3.43 kBtext/coffeescriptView Raw
1#mocha
2e = require 'expect.js'
3moment = require 'moment'
4path = require 'path'
5
6describe '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