UNPKG

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