wa-chat-server
Version:
Watson Assistant powered chat server
67 lines (66 loc) • 3.04 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoggerDriverMock = void 0;
const assert_1 = __importDefault(require("assert"));
const LoggerDriver_1 = require("../../class/Logger/LoggerDriver");
const LoggerDriverMockCall_1 = require("./LoggerDriverMockCall");
// Logger used for tests
class LoggerDriverMock extends LoggerDriver_1.LoggerDriver {
/*
* By default all log messages are are checked against the
* logger configuration (check == true) and it is not written to the console
* (silence == true)
*
* For test debugging it may be handy to set silence = false
*/
constructor(check = true, silence = true) {
super();
this.check = check;
this.silence = silence;
this.expectedCalls = [];
this.callNum = 0;
}
// Adds an expected logger call
expect(level, msg, params) {
this.expectedCalls.push(new LoggerDriverMockCall_1.LoggerDriverMockCall(level, msg, params));
return this;
}
log(level, msg, params) {
return __awaiter(this, void 0, void 0, function* () {
if (this.check && this.callNum >= this.expectedCalls.length) {
throw new Error(`LoggerDriverMock: call no. ${this.callNum + 1} not expected - ${level}('${msg}', ` +
`${params.map((p) => JSON.stringify(p)).join(', ')})`);
}
const msgToLog = `[${new Date().toISOString().replace(/\..*/, '')}] ${msg}`;
if (!this.silence) {
console[level](msgToLog, ...params);
}
if (this.check) {
const call = new LoggerDriverMockCall_1.LoggerDriverMockCall(level, msg, params);
try {
assert_1.default.deepStrictEqual(call, this.expectedCalls[this.callNum]);
}
catch (e) {
throw new Error(`LoggerDriverMock: call no. ${this.callNum + 1} - expected and received call differs: ` +
e.toString());
}
finally {
this.callNum++;
}
}
});
}
}
exports.LoggerDriverMock = LoggerDriverMock;