1 | const fs = require('fs-extra')
|
2 | const path = require('path')
|
3 | const Logger = require('../src/logger')
|
4 |
|
5 | const logger = new Logger({ path: '__tests__', appName: 'logger-test' })
|
6 | const filename = logger.file
|
7 | const expect = require('chai').expect
|
8 |
|
9 | const dataValidationRule = (entry, data) => {
|
10 | if (data === null) {
|
11 | return
|
12 | }
|
13 | expect(data.length).greaterThan(0)
|
14 | const test = data.match(entry)
|
15 | if (test === null) {
|
16 | return
|
17 | }
|
18 | expect(test.length).greaterThan(0)
|
19 | }
|
20 |
|
21 | async function asyncLogger(type, msg) {
|
22 | return await logger[type](msg)
|
23 | }
|
24 |
|
25 | describe('Logger', () => {
|
26 | beforeEach(done => {
|
27 | logger.log('beforeEach')
|
28 | done()
|
29 | })
|
30 | after(done => {
|
31 | fs.unlink(filename)
|
32 | done()
|
33 | })
|
34 | context('Should validate logs diretory', () => {
|
35 | it('should validate existensce of `logs` directory', done => {
|
36 | let result = fs.existsSync(path.dirname(logger.file))
|
37 | expect(result).to.equal(true)
|
38 | done()
|
39 | })
|
40 | })
|
41 |
|
42 | context('it should create various log entries', () => {
|
43 | it('should create log file', done => {
|
44 | fs.exists(filename)
|
45 | .then(result => {
|
46 | expect(true).to.equal(true)
|
47 | done()
|
48 | })
|
49 | .catch(err => {
|
50 | console.error(err)
|
51 | done()
|
52 | })
|
53 | })
|
54 | it('should create `log` entry', done => {
|
55 | asyncLogger('log', 'log entry')
|
56 | .then(result => {
|
57 | done()
|
58 | fs.readFile(filename, 'utf8')
|
59 | .then(data => {
|
60 | dataValidationRule('log entry', data)
|
61 | })
|
62 | .catch(err => {
|
63 | console.error(err)
|
64 | })
|
65 | })
|
66 | .catch(err => {
|
67 | console.log(err)
|
68 | })
|
69 | })
|
70 | it('should create `debug` entry', done => {
|
71 | asyncLogger('debug', 'debug entry')
|
72 | .then(result => {
|
73 | done()
|
74 | fs.readFile(filename, 'utf8')
|
75 | .then(data => {
|
76 | dataValidationRule('debug entry', data)
|
77 | })
|
78 | .catch(err => {
|
79 | console.error(err)
|
80 | })
|
81 | })
|
82 | .catch(err => {
|
83 | console.log(err)
|
84 | })
|
85 | })
|
86 | it('should create `critical` entry', done => {
|
87 | asyncLogger('critical', 'critical entry')
|
88 | .then(result => {
|
89 | done()
|
90 | fs.readFile(filename, 'utf8')
|
91 | .then(data => {
|
92 | dataValidationRule('critical entry', data)
|
93 | })
|
94 | .catch(err => {
|
95 | console.error(err)
|
96 | })
|
97 | })
|
98 | .catch(err => {
|
99 | console.log(err)
|
100 | })
|
101 | })
|
102 | it('should create `error` entry', done => {
|
103 | asyncLogger('error', 'error entry')
|
104 | .then(result => {
|
105 | done()
|
106 | fs.readFile(filename, 'utf8')
|
107 | .then(data => {
|
108 | dataValidationRule('log entry', data)
|
109 | })
|
110 | .catch(err => {
|
111 | console.error(err)
|
112 | })
|
113 | })
|
114 | .catch(err => {
|
115 | console.log(err)
|
116 | })
|
117 | })
|
118 | it('should create `success` entry', done => {
|
119 | asyncLogger('success', 'success entry')
|
120 | .then(result => {
|
121 | done()
|
122 | fs.readFile(filename, 'utf8')
|
123 | .then(data => {
|
124 | dataValidationRule('success entry', data)
|
125 | })
|
126 | .catch(err => {
|
127 | console.error(err)
|
128 | })
|
129 | })
|
130 | .catch(err => {
|
131 | console.log(err)
|
132 | })
|
133 | })
|
134 | it('should create `warn` entry', done => {
|
135 | asyncLogger('warn', 'warn entry')
|
136 | .then(result => {
|
137 | done()
|
138 | fs.readFile(filename, 'utf8')
|
139 | .then(data => {
|
140 | dataValidationRule('warn entry', data)
|
141 | })
|
142 | .catch(err => {
|
143 | console.error(err)
|
144 | })
|
145 | })
|
146 | .catch(err => {
|
147 | console.log(err)
|
148 | })
|
149 | })
|
150 |
|
151 | it('should create `warning` entry', done => {
|
152 | asyncLogger('warning', 'warning entry')
|
153 | .then(result => {
|
154 | done()
|
155 | fs.readFile(filename, 'utf8')
|
156 | .then(data => {
|
157 | dataValidationRule('warning entry', data)
|
158 | })
|
159 | .catch(err => {
|
160 | console.error(err)
|
161 | })
|
162 | })
|
163 | .catch(err => {
|
164 | console.log(err)
|
165 | })
|
166 | })
|
167 | it('should create `info` entry', done => {
|
168 | asyncLogger('info', 'info entry')
|
169 | .then(result => {
|
170 | done()
|
171 | fs.readFile(filename, 'utf8')
|
172 | .then(data => {
|
173 | dataValidationRule('info entry', data)
|
174 | })
|
175 | .catch(err => {
|
176 | console.error(err)
|
177 | })
|
178 | })
|
179 | .catch(err => {
|
180 | console.log(err)
|
181 | })
|
182 | })
|
183 | it('should create `notice` entry', done => {
|
184 | asyncLogger('notice', 'notice entry')
|
185 | .then(result => {
|
186 | done()
|
187 | fs.readFile(filename, 'utf8')
|
188 | .then(data => {
|
189 | dataValidationRule('notice entry', data)
|
190 | })
|
191 | .catch(err => {
|
192 | console.error(err)
|
193 | })
|
194 | })
|
195 | .catch(err => {
|
196 | console.log(err)
|
197 | })
|
198 | })
|
199 | it('should create `note` entry', done => {
|
200 | asyncLogger('note', 'note entry')
|
201 | .then(result => {
|
202 | done()
|
203 | fs.readFile(filename, 'utf8')
|
204 | .then(data => {
|
205 | dataValidationRule('note entry', data)
|
206 | })
|
207 | .catch(err => {
|
208 | console.error(err)
|
209 | })
|
210 | })
|
211 | .catch(err => {
|
212 | console.log(err)
|
213 | })
|
214 | })
|
215 | it('should create `status` entry', done => {
|
216 | asyncLogger('status', 'status entry')
|
217 | .then(result => {
|
218 | done()
|
219 | fs.readFile(filename, 'utf8')
|
220 | .then(data => {
|
221 | dataValidationRule('status entry', data)
|
222 | })
|
223 | .catch(err => {
|
224 | console.error(err)
|
225 | })
|
226 | })
|
227 | .catch(err => {
|
228 | console.log(err)
|
229 | })
|
230 | })
|
231 | })
|
232 | })
|