llamajs
Version:
A dynamic logger for the dynamic developer
153 lines (149 loc) • 6.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = require("chai");
const mockFs = require("mock-fs");
const fs = require("fs");
const file_transport_1 = require("../file/file.transport");
const severityLevels_1 = require("../../severityLevels/severityLevels");
const formats_1 = require("../../formats/formats");
const fileName = 'test_file_transport.txt';
const fileTransportConfigNewLine = {
fileName,
noNewLine: false,
format: new formats_1.CsvFormat(),
levels: [
severityLevels_1.syslogSeverityLevels[6],
severityLevels_1.syslogSeverityLevels[1],
],
};
const fileTransportConfigNoNewLine = {
fileName,
format: new formats_1.CsvFormat(),
noNewLine: true,
levels: [
severityLevels_1.syslogSeverityLevels[6],
severityLevels_1.syslogSeverityLevels[1],
],
};
const validAlertMessage = {
name: 'validAlert',
severity: severityLevels_1.syslogSeverityLevels[6],
};
const validInfoMessage = {
name: 'validInfo',
severity: severityLevels_1.syslogSeverityLevels[1],
};
const invalidMessage = {
name: 'invalid',
severity: severityLevels_1.IbmTivoliSeverityLevels[0],
};
describe('File Transport Module', function () {
describe('#pass()', function () {
let fileTransport;
context('When all values are valid', function () {
context('On noNewLine set to false', function () {
beforeEach(function () {
fileTransport = new file_transport_1.FileTransport(fileTransportConfigNewLine);
mockFs();
});
it('Should write a single messages to the file with newline', async function () {
await fileTransport.send(validAlertMessage);
const fileString = fs.readFileSync(fileName, 'UTF8');
chai_1.expect(fileString)
.to
.equal(new formats_1.CsvFormat().getMessage(validAlertMessage) + '\n');
});
/*
This test case works on the file system, however, mock-fs
has a problem with promises since node > 10.4.1
Issue number 245: https://github.com/tschaub/mock-fs/issues/245
*/
/*
it(
'Should write multiple messages in seperate lines in the file',
async function () {
await fileTransport.send(validInfoMessage);
await fileTransport.send(validAlertMessage);
const fileStringArray = fs.readFileSync(fileName, 'UTF8')
.toString()
.split('\n');
expect(fileStringArray[0])
.to
.equal(new CsvFormat().getMessage(validInfoMessage));
expect(fileStringArray[1])
.to
.equal(new CsvFormat().getMessage(validAlertMessage));
});
*/
afterEach(function () {
mockFs.restore();
});
});
context('On noNewLine set to true', function () {
beforeEach(function () {
fileTransport = new file_transport_1.FileTransport(fileTransportConfigNoNewLine);
mockFs();
});
it('Should write a single messages to the file without newline', async function () {
await fileTransport.send(validAlertMessage);
const fileString = fs.readFileSync(fileName, 'UTF8');
chai_1.expect(fileString)
.to
.equal(new formats_1.CsvFormat().getMessage(validAlertMessage));
});
/*
This test case works on the file system, however, mock-fs
has a problem with promises since node > 10.4.1
Issue number 245: https://github.com/tschaub/mock-fs/issues/245
*/
/*
it(
'Should write multiple messages in seperate lines in the file',
async function () {
await fileTransport.send(validInfoMessage);
await fileTransport.send(validAlertMessage);
const fileString = fs.readFileSync(fileName, 'UTF8');
expect(fileString)
.to
.equal(new CsvFormat().getMessage(validInfoMessage) +
new CsvFormat().getMessage(validAlertMessage));
});
*/
afterEach(function () {
mockFs.restore();
});
});
});
context('When values are invalid', function () {
context('On noNewLine set to true', function () {
beforeEach(function () {
fileTransport = new file_transport_1.FileTransport(fileTransportConfigNoNewLine);
mockFs({ 'test_file_transport.txt': '' });
});
it('Should not send the message if the severity is not compatible', async function () {
await fileTransport.send(invalidMessage);
const fileString = fs.readFileSync(fileName, 'UTF8');
chai_1.expect(fileString).to.equal('');
});
afterEach(function () {
mockFs.restore();
});
});
context('On noNewLine set to false', function () {
beforeEach(function () {
fileTransport = new file_transport_1.FileTransport(fileTransportConfigNewLine);
mockFs({ 'test_file_transport.txt': '' });
});
it('Should not send the message if the severity is not compatible', async function () {
await fileTransport.send(invalidMessage);
const fileString = fs.readFileSync(fileName, 'UTF8');
chai_1.expect(fileString).to.equal('');
});
afterEach(function () {
mockFs.restore();
});
});
});
});
});
//# sourceMappingURL=file.transport.spec.js.map