Commit 27545860 authored by Boris Vasilenko's avatar Boris Vasilenko
Browse files

NAS-125092: Add unit tests

parent bdf92206
Showing with 61 additions and 5 deletions
+61 -5
import { Injector } from '@angular/core';
import { createServiceFactory, mockProvider, SpectatorService } from '@ngneat/spectator/jest';
import { KiB } from 'app/constants/bytes.constant';
import { ErrorAccumulatorService } from 'app/services/error-accumulator.service';
describe('ErrorAccumulatorService', () => {
let spectator: SpectatorService<ErrorAccumulatorService>;
const createService = createServiceFactory({
service: ErrorAccumulatorService,
providers: [
mockProvider(Injector, {
get: jest.fn(),
}),
],
});
beforeEach(() => {
spectator = createService();
});
describe('appendError', () => {
it('appends error to logs list', () => {
jest.spyOn(spectator.service, 'appendError');
spectator.service.appendError('error message 1');
spectator.service.appendError('error message 2');
expect(spectator.service.getErrorLogs()).toBe(
'error message 1\nerror message 2',
);
spectator.service.appendError('error message 3');
expect(spectator.service.getErrorLogs()).toBe(
'error message 1\nerror message 2\nerror message 3',
);
});
it('truncates logs when overflowing', () => {
jest.spyOn(spectator.service, 'appendError');
const fakeErrors = {
errorA: 'a'.repeat(KiB * 10),
errorB: 'b'.repeat(KiB * 10),
errorC: 'c'.repeat(KiB * 10),
errorD: 'd'.repeat(KiB * 10),
errorE: 'e'.repeat(KiB * 10),
errorF: 'f'.repeat(KiB * 10),
};
Object.values(fakeErrors).forEach((error) => spectator.service.appendError(error));
expect(spectator.service.getErrorLogs()).toBe(
`${fakeErrors.errorC}\n${fakeErrors.errorD}\n${fakeErrors.errorE}\n${fakeErrors.errorF}`,
);
});
});
});
......@@ -6,9 +6,9 @@ import { KiB } from 'app/constants/bytes.constant';
})
export class ErrorAccumulatorService {
private errorLogs: string[] = [];
private maxSizeLogs = KiB * 50;
private maxLength = KiB * 50;
saveError(errorMsg: string): void {
appendError(errorMsg: string): void {
this.errorLogs.push(errorMsg);
this.truncateErrors();
}
......@@ -18,7 +18,7 @@ export class ErrorAccumulatorService {
}
private truncateErrors(): void {
if (JSON.stringify(this.errorLogs).length > this.maxSizeLogs) {
if (JSON.stringify(this.errorLogs).length > this.maxLength) {
this.errorLogs.shift();
this.truncateErrors();
}
......
......@@ -43,9 +43,9 @@ export class ErrorHandlerService implements ErrorHandler {
if (parsedError) {
error = parsedError;
if (Array.isArray(parsedError)) {
parsedError.forEach((err) => this.errorAccumulator.saveError(err.message));
parsedError.forEach((err) => this.errorAccumulator.appendError(err.message));
} else {
this.errorAccumulator.saveError(parsedError.message);
this.errorAccumulator.appendError(parsedError.message);
}
}
this.logToSentry(error);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment