UNPKG

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