This commit upgrades TypeScript to the latest version 5.3 and introduces `verbatimModuleSyntax` in line with the official Vue guide recommendatinos (vuejs/docs#2592). By enforcing `import type` for type-only imports, this commit improves code clarity and supports tooling optimization, ensuring imports are only bundled when necessary for runtime. Changes: - Bump TypeScript to 5.3.3 across the project. - Adjust import statements to utilize `import type` where applicable, promoting cleaner and more efficient code.
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { it, expect } from 'vitest';
|
|
import type { EnumType } from '@/application/Common/Enum';
|
|
|
|
export class EnumRangeTestRunner<TEnumValue extends EnumType> {
|
|
constructor(private readonly runner: (value: TEnumValue) => void) {
|
|
}
|
|
|
|
public testOutOfRangeThrows(errorMessageBuilder?: (outOfRangeValue: TEnumValue) => string) {
|
|
it('throws when value is out of range', () => {
|
|
// arrange
|
|
const value = Number.MAX_SAFE_INTEGER as TEnumValue;
|
|
const expectedError = errorMessageBuilder
|
|
? errorMessageBuilder(value)
|
|
: `enum value "${value}" is out of range`;
|
|
// act
|
|
const act = () => this.runner(value);
|
|
// assert
|
|
expect(act).to.throw(expectedError);
|
|
});
|
|
return this;
|
|
}
|
|
|
|
public testInvalidValueThrows(invalidValue: TEnumValue, expectedError: string) {
|
|
it(`throws: \`${expectedError}\``, () => {
|
|
// arrange
|
|
const value = invalidValue;
|
|
// act
|
|
const act = () => this.runner(value);
|
|
// assert
|
|
expect(act).to.throw(expectedError);
|
|
});
|
|
return this;
|
|
}
|
|
|
|
public testValidValueDoesNotThrow(validValue: TEnumValue) {
|
|
it('does not throw with valid value', () => {
|
|
// arrange
|
|
const value = validValue;
|
|
// act
|
|
const act = () => this.runner(value);
|
|
// assert
|
|
expect(act).to.not.throw();
|
|
});
|
|
return this;
|
|
}
|
|
}
|