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.
56 lines
2.0 KiB
TypeScript
56 lines
2.0 KiB
TypeScript
import {
|
|
describe,
|
|
} from 'vitest';
|
|
import { itIsSingleton } from '@tests/unit/shared/TestCases/SingletonTests';
|
|
import { EnvironmentVariablesFactory, type EnvironmentVariablesValidator } from '@/infrastructure/EnvironmentVariables/EnvironmentVariablesFactory';
|
|
import { ViteEnvironmentVariables } from '@/infrastructure/EnvironmentVariables/Vite/ViteEnvironmentVariables';
|
|
import type { IEnvironmentVariables } from '@/infrastructure/EnvironmentVariables/IEnvironmentVariables';
|
|
import { expectExists } from '@tests/shared/Assertions/ExpectExists';
|
|
|
|
describe('EnvironmentVariablesFactory', () => {
|
|
describe('instance', () => {
|
|
itIsSingleton({
|
|
getter: () => EnvironmentVariablesFactory.Current.instance,
|
|
expectedType: ViteEnvironmentVariables,
|
|
});
|
|
});
|
|
it('creates the correct type', () => {
|
|
// arrange
|
|
const sut = new TestableEnvironmentVariablesFactory();
|
|
// act
|
|
const metadata = sut.instance;
|
|
// assert
|
|
expect(metadata).to.be.instanceOf(ViteEnvironmentVariables);
|
|
});
|
|
it('validates its instance', () => {
|
|
// arrange
|
|
let validatedInstance: IEnvironmentVariables | undefined;
|
|
const validatorMock = (instanceToValidate: IEnvironmentVariables) => {
|
|
validatedInstance = instanceToValidate;
|
|
};
|
|
// act
|
|
const sut = new TestableEnvironmentVariablesFactory(validatorMock);
|
|
const actualInstance = sut.instance;
|
|
// assert
|
|
expectExists(validatedInstance);
|
|
expect(actualInstance).to.equal(validatedInstance);
|
|
});
|
|
it('throws error if validator fails', () => {
|
|
// arrange
|
|
const expectedError = 'validator failed';
|
|
const failingValidator = () => {
|
|
throw new Error(expectedError);
|
|
};
|
|
// act
|
|
const act = () => new TestableEnvironmentVariablesFactory(failingValidator);
|
|
// assert
|
|
expect(act).to.throw(expectedError);
|
|
});
|
|
});
|
|
|
|
class TestableEnvironmentVariablesFactory extends EnvironmentVariablesFactory {
|
|
public constructor(validator: EnvironmentVariablesValidator = () => { /* NO OP */ }) {
|
|
super(validator);
|
|
}
|
|
}
|