Migrate to version 2 of nodes.json and start adding tests
This commit is contained in:
parent
8e7b02e56d
commit
fb87695b3e
23 changed files with 7352 additions and 1228 deletions
server/__mocks__
73
server/__mocks__/logger.ts
Normal file
73
server/__mocks__/logger.ts
Normal file
|
@ -0,0 +1,73 @@
|
|||
import {Logger, TaggedLogger} from "../types";
|
||||
|
||||
type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'profile';
|
||||
|
||||
export type MockLogMessages = any[][];
|
||||
type TaggedLogMessages = {
|
||||
tags: {[key: string]: TaggedLogMessages},
|
||||
logs: {[key: string]: MockLogMessages}
|
||||
}
|
||||
|
||||
export class MockLogger implements Logger {
|
||||
private taggedLogMessages: TaggedLogMessages = MockLogger.emptyTaggedLogMessages();
|
||||
|
||||
constructor() {}
|
||||
|
||||
private static emptyTaggedLogMessages(): TaggedLogMessages {
|
||||
return {
|
||||
tags: {},
|
||||
logs: {}
|
||||
};
|
||||
}
|
||||
|
||||
reset(): void {
|
||||
this.taggedLogMessages = MockLogger.emptyTaggedLogMessages();
|
||||
}
|
||||
|
||||
getMessages(level: LogLevel, ...tags: string[]): MockLogMessages {
|
||||
let taggedLogMessages = this.taggedLogMessages;
|
||||
for (const tag of tags) {
|
||||
if (!taggedLogMessages.tags[tag]) {
|
||||
return [];
|
||||
}
|
||||
|
||||
taggedLogMessages = taggedLogMessages.tags[tag];
|
||||
}
|
||||
|
||||
return taggedLogMessages.logs[level] || [];
|
||||
}
|
||||
|
||||
init(): void {}
|
||||
|
||||
private doLog(taggedLogMessages: TaggedLogMessages, level: LogLevel, tags: string[], args: any[]): void {
|
||||
if (tags.length > 0) {
|
||||
const tag = tags[0];
|
||||
const remainingTags = tags.slice(1);
|
||||
const subTaggedLogsMessages: TaggedLogMessages =
|
||||
taggedLogMessages.tags[tag] || MockLogger.emptyTaggedLogMessages();
|
||||
this.doLog(subTaggedLogsMessages, level, remainingTags, args);
|
||||
taggedLogMessages.tags[tag] = subTaggedLogsMessages;
|
||||
|
||||
} else {
|
||||
const logMessages: MockLogMessages = taggedLogMessages.logs[level] || [];
|
||||
logMessages.push(args);
|
||||
taggedLogMessages.logs[level] = logMessages;
|
||||
}
|
||||
}
|
||||
|
||||
private log(level: LogLevel, tags: string[], args: any[]): void {
|
||||
this.doLog(this.taggedLogMessages, level, tags, args);
|
||||
}
|
||||
|
||||
tag(...tags: string[]): TaggedLogger {
|
||||
return {
|
||||
debug: (...args: any[]): void => this.log('debug', tags, args),
|
||||
info: (...args: any[]): void => this.log('info', tags, args),
|
||||
warn: (...args: any[]): void => this.log('warn', tags, args),
|
||||
error: (...args: any[]): void => this.log('error', tags, args),
|
||||
profile: (...args: any[]): void => this.log('profile', tags, args),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default new MockLogger();
|
Loading…
Add table
Add a link
Reference in a new issue