This commit applies `strictNullChecks` to the entire codebase to improve maintainability and type safety. Key changes include: - Remove some explicit null-checks where unnecessary. - Add necessary null-checks. - Refactor static factory functions for a more functional approach. - Improve some test names and contexts for better debugging. - Add unit tests for any additional logic introduced. - Refactor `createPositionFromRegexFullMatch` to its own function as the logic is reused. - Prefer `find` prefix on functions that may return `undefined` and `get` prefix for those that always return a value.
51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import { describe } from 'vitest';
|
|
import { LoggerStub } from '@tests/unit/shared/Stubs/LoggerStub';
|
|
import { WindowVariablesStub } from '@tests/unit/shared/Stubs/WindowVariablesStub';
|
|
import { WindowInjectedLogger } from '@/infrastructure/Log/WindowInjectedLogger';
|
|
import { itEachAbsentObjectValue } from '@tests/unit/shared/TestCases/AbsentTests';
|
|
import { itEachLoggingMethod } from './LoggerTestRunner';
|
|
|
|
describe('WindowInjectedLogger', () => {
|
|
describe('throws if log is absent', () => {
|
|
itEachAbsentObjectValue((absentValue) => {
|
|
// arrange
|
|
const expectedError = 'missing log';
|
|
const windowVariables = new WindowVariablesStub()
|
|
.withLog(absentValue as never);
|
|
// act
|
|
const act = () => new WindowInjectedLogger(windowVariables);
|
|
// assert
|
|
expect(act).to.throw(expectedError);
|
|
});
|
|
});
|
|
describe('throws if window is absent', () => {
|
|
itEachAbsentObjectValue((absentValue) => {
|
|
// arrange
|
|
const expectedError = 'missing window';
|
|
const windowVariables = absentValue;
|
|
// act
|
|
const act = () => new WindowInjectedLogger(windowVariables);
|
|
// assert
|
|
expect(act).to.throw(expectedError);
|
|
}, { excludeUndefined: true });
|
|
});
|
|
describe('methods log the provided params', () => {
|
|
itEachLoggingMethod((functionName) => {
|
|
// arrange
|
|
const expectedParams = ['test', 123, { some: 'object' }];
|
|
const loggerMock = new LoggerStub();
|
|
const windowVariables = new WindowVariablesStub()
|
|
.withLog(loggerMock);
|
|
const logger = new WindowInjectedLogger(windowVariables);
|
|
|
|
// act
|
|
logger[functionName](...expectedParams);
|
|
|
|
// assert
|
|
expect(loggerMock.callHistory).to.have.lengthOf(1);
|
|
expect(loggerMock.callHistory[0].methodName).to.equal(functionName);
|
|
expect(loggerMock.callHistory[0].args).to.deep.equal(expectedParams);
|
|
});
|
|
});
|
|
});
|