Files
privacy.sexy/tests/unit/shared/Stubs/EnumParserStub.ts
undergroundwires 6ecfa9b954 Add object property validation in parser #369
This commit introduces stricter type validation across the application
to reject objects with unexpected properties, enhancing the robustness
and predictability of data handling.

Changes include:

- Implement a common utility to validate object types.
- Refactor across various parsers and data handlers to utilize the new
  validations.
- Update error messages for better clarity and troubleshooting.
2024-06-13 22:26:57 +02:00

32 lines
959 B
TypeScript

import type { EnumParser } from '@/application/Common/Enum';
export class EnumParserStub<T> implements EnumParser<T> {
private readonly scenarios = new Array<{
inputName: string, inputValue: string, outputValue: T }>();
private defaultValue: T;
public setup(inputName: string, inputValue: string, outputValue: T): this {
this.scenarios.push({ inputName, inputValue, outputValue });
return this;
}
public setupDefaultValue(outputValue: T): this {
this.defaultValue = outputValue;
return this;
}
public parseEnum(value: string, propertyName: string): T {
const scenario = this.scenarios.find(
(s) => s.inputName === propertyName && s.inputValue === value,
);
if (scenario) {
return scenario.outputValue;
}
if (this.defaultValue !== undefined) {
return this.defaultValue;
}
throw new Error(`Don't know now what to return from ${EnumParserStub.name}, forgot to set-up?`);
}
}