diff --git a/packages/runtime/test/models/Implementation.spec.ts b/packages/execution/test/models/Implementation.spec.ts similarity index 94% rename from packages/runtime/test/models/Implementation.spec.ts rename to packages/execution/test/models/Implementation.spec.ts index d34d2157..5edd80ec 100644 --- a/packages/runtime/test/models/Implementation.spec.ts +++ b/packages/execution/test/models/Implementation.spec.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; -import { IMPLEMENTATIONS } from '../_fixtures/models/Implementation.fixture'; +import { IMPLEMENTATIONS } from './fixtures'; const privateImplementation = IMPLEMENTATIONS.PRIVATE; const publicImplementation = IMPLEMENTATIONS.PUBLIC; diff --git a/packages/runtime/test/models/Procedure.spec.ts b/packages/execution/test/models/Procedure.spec.ts similarity index 96% rename from packages/runtime/test/models/Procedure.spec.ts rename to packages/execution/test/models/Procedure.spec.ts index 2056ff50..1e070823 100644 --- a/packages/runtime/test/models/Procedure.spec.ts +++ b/packages/execution/test/models/Procedure.spec.ts @@ -3,7 +3,7 @@ import { describe, expect, it } from 'vitest'; import Version from '../../src/models/Version'; -import { PROCEDURES } from '../_fixtures/models/Procedure.fixture'; +import { PROCEDURES } from './fixtures'; const privateProcedure = PROCEDURES.PRIVATE; const publicProcedure = PROCEDURES.PUBLIC; diff --git a/packages/runtime/test/models/Segment.spec.ts b/packages/execution/test/models/Segment.spec.ts similarity index 94% rename from packages/runtime/test/models/Segment.spec.ts rename to packages/execution/test/models/Segment.spec.ts index a39ca52a..5c073189 100644 --- a/packages/runtime/test/models/Segment.spec.ts +++ b/packages/execution/test/models/Segment.spec.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; -import { SEGMENTS } from '../_fixtures/models/Segment.fixture'; +import { SEGMENTS } from './fixtures'; const generalSegment = SEGMENTS.GENERAL; diff --git a/packages/runtime/test/models/Version.spec.ts b/packages/execution/test/models/Version.spec.ts similarity index 96% rename from packages/runtime/test/models/Version.spec.ts rename to packages/execution/test/models/Version.spec.ts index 8357d380..b89cabd4 100644 --- a/packages/runtime/test/models/Version.spec.ts +++ b/packages/execution/test/models/Version.spec.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; -import { VERSIONS } from '../_fixtures/models/Version.fixture'; +import { VERSIONS } from './fixtures'; const actualVersion = VERSIONS.ACTUAL; diff --git a/packages/execution/test/models/fixtures/executables.fixture.ts b/packages/execution/test/models/fixtures/executables.fixture.ts new file mode 100644 index 00000000..6c07e18c --- /dev/null +++ b/packages/execution/test/models/fixtures/executables.fixture.ts @@ -0,0 +1,13 @@ + +export const EXECUTABLES = +{ + PRIVATE: () => { return 'private'; }, + PROTECTED: () => { return 'protected'; }, + PUBLIC: () => { return 'public'; }, + PARAMETERS: (mandatory: string, optional = 'default') => { return `${mandatory} ${optional}`; }, + BROKEN: () => { throw new Error('broken'); }, + CONTEXT: () => { return this; }, + V1_0_0: () => { return '1.0.0'; }, + V1_0_5: () => { return '1.0.5'; }, + V1_1_0: () => { return '1.1.0'; } +}; diff --git a/packages/runtime/test/_fixtures/models/Implementation.fixture.ts b/packages/execution/test/models/fixtures/implementations.fixture.ts similarity index 56% rename from packages/runtime/test/_fixtures/models/Implementation.fixture.ts rename to packages/execution/test/models/fixtures/implementations.fixture.ts index d7cbbb40..2ae01bf3 100644 --- a/packages/runtime/test/_fixtures/models/Implementation.fixture.ts +++ b/packages/execution/test/models/fixtures/implementations.fixture.ts @@ -1,14 +1,14 @@ import { AccessLevels } from '../../../src/definitions/AccessLevel'; + import Implementation from '../../../src/models/Implementation'; import Version from '../../../src/models/Version'; -import { EXECUTABLES } from './Executable.fixture'; -import { PARAMETERS } from './Parameter.fixture'; +import { EXECUTABLES } from './executables.fixture'; +import { PARAMETERS } from './parameters.fixture'; -const IMPLEMENTATIONS = +export const IMPLEMENTATIONS = { - // General PRIVATE: new Implementation(Version.DEFAULT, AccessLevels.PRIVATE, [], EXECUTABLES.PRIVATE), PROTECTED: new Implementation(Version.DEFAULT, AccessLevels.PROTECTED, [], EXECUTABLES.PROTECTED), PUBLIC: new Implementation(Version.DEFAULT, AccessLevels.PUBLIC, [], EXECUTABLES.PUBLIC), @@ -17,19 +17,5 @@ const IMPLEMENTATIONS = CONTEXT: new Implementation(Version.DEFAULT, AccessLevels.PRIVATE, [], EXECUTABLES.CONTEXT), V1_0_0: new Implementation(new Version(1, 0, 0), AccessLevels.PRIVATE, [], EXECUTABLES.V1_0_0), V1_0_5: new Implementation(new Version(1, 0, 5), AccessLevels.PRIVATE, [], EXECUTABLES.V1_0_5), - V1_1_0: new Implementation(new Version(1, 1, 0), AccessLevels.PRIVATE, [], EXECUTABLES.V1_1_0), - - // First segment - FIRST: new Implementation(Version.DEFAULT, AccessLevels.PRIVATE, [], EXECUTABLES.FIRST), - SECOND: new Implementation(Version.DEFAULT, AccessLevels.PUBLIC, [], EXECUTABLES.SECOND), - THIRD: new Implementation(Version.DEFAULT, AccessLevels.PUBLIC, [], EXECUTABLES.THIRD), - - // Second segment - FOURTH: new Implementation(Version.DEFAULT, AccessLevels.PUBLIC, [], EXECUTABLES.FOURTH), - FIFTH: new Implementation(Version.DEFAULT, AccessLevels.PRIVATE, [], EXECUTABLES.FIFTH), - SIXTH: new Implementation(Version.DEFAULT, AccessLevels.PUBLIC, [], EXECUTABLES.SIXTH) + V1_1_0: new Implementation(new Version(1, 1, 0), AccessLevels.PRIVATE, [], EXECUTABLES.V1_1_0) }; - -Object.freeze(IMPLEMENTATIONS); - -export { IMPLEMENTATIONS }; diff --git a/packages/execution/test/models/fixtures/index.ts b/packages/execution/test/models/fixtures/index.ts new file mode 100644 index 00000000..46b72800 --- /dev/null +++ b/packages/execution/test/models/fixtures/index.ts @@ -0,0 +1,7 @@ + +export * from './executables.fixture'; +export * from './implementations.fixture'; +export * from './parameters.fixture'; +export * from './procedures.fixture'; +export * from './segments.fixture'; +export * from './versions.fixture'; diff --git a/packages/runtime/test/_fixtures/models/Parameter.fixture.ts b/packages/execution/test/models/fixtures/parameters.fixture.ts similarity index 71% rename from packages/runtime/test/_fixtures/models/Parameter.fixture.ts rename to packages/execution/test/models/fixtures/parameters.fixture.ts index e7490e16..b3dabd6e 100644 --- a/packages/runtime/test/_fixtures/models/Parameter.fixture.ts +++ b/packages/execution/test/models/fixtures/parameters.fixture.ts @@ -1,12 +1,8 @@ import NamedParameter from '../../../src/models/NamedParameter'; -const PARAMETERS = +export const PARAMETERS = { MANDATORY: new NamedParameter('mandatory', false), OPTIONAL: new NamedParameter('optional', true) }; - -Object.freeze(PARAMETERS); - -export { PARAMETERS }; diff --git a/packages/runtime/test/_fixtures/models/Procedure.fixture.ts b/packages/execution/test/models/fixtures/procedures.fixture.ts similarity index 50% rename from packages/runtime/test/_fixtures/models/Procedure.fixture.ts rename to packages/execution/test/models/fixtures/procedures.fixture.ts index 3b3064a4..060e92ce 100644 --- a/packages/runtime/test/_fixtures/models/Procedure.fixture.ts +++ b/packages/execution/test/models/fixtures/procedures.fixture.ts @@ -1,45 +1,30 @@ import Procedure from '../../../src/models/Procedure'; -import { IMPLEMENTATIONS } from './Implementation.fixture'; +import { IMPLEMENTATIONS } from './implementations.fixture'; -const PROCEDURES = +export const PROCEDURES = { - // General PRIVATE: new Procedure('private') .addImplementation(IMPLEMENTATIONS.PRIVATE), + PROTECTED: new Procedure('protected') .addImplementation(IMPLEMENTATIONS.PROTECTED), + PUBLIC: new Procedure('public') .addImplementation(IMPLEMENTATIONS.PUBLIC), + PARAMETERS: new Procedure('parameter') .addImplementation(IMPLEMENTATIONS.PARAMETERS), + BROKEN: new Procedure('broken') .addImplementation(IMPLEMENTATIONS.BROKEN), + CONTEXT: new Procedure('context') .addImplementation(IMPLEMENTATIONS.CONTEXT), + VERSIONED: new Procedure('versioned') .addImplementation(IMPLEMENTATIONS.V1_0_0) .addImplementation(IMPLEMENTATIONS.V1_0_5) - .addImplementation(IMPLEMENTATIONS.V1_1_0), - - // First segment - FIRST: new Procedure('first') - .addImplementation(IMPLEMENTATIONS.FIRST), - SECOND: new Procedure('second') - .addImplementation(IMPLEMENTATIONS.SECOND), - THIRD: new Procedure('third') - .addImplementation(IMPLEMENTATIONS.THIRD), - - // Second segment - FOURTH: new Procedure('fourth') - .addImplementation(IMPLEMENTATIONS.FOURTH), - FIFTH: new Procedure('fifth') - .addImplementation(IMPLEMENTATIONS.FIFTH), - SIXTH: new Procedure('sixth') - .addImplementation(IMPLEMENTATIONS.SIXTH) + .addImplementation(IMPLEMENTATIONS.V1_1_0) }; - -Object.freeze(PROCEDURES); - -export { PROCEDURES }; diff --git a/packages/execution/test/models/fixtures/segments.fixture.ts b/packages/execution/test/models/fixtures/segments.fixture.ts new file mode 100644 index 00000000..a2368b18 --- /dev/null +++ b/packages/execution/test/models/fixtures/segments.fixture.ts @@ -0,0 +1,16 @@ + +import Segment from '../../../src/models/Segment'; + +import { PROCEDURES } from './procedures.fixture'; + +export const SEGMENTS = +{ + GENERAL: new Segment('general') + .addProcedure(PROCEDURES.PRIVATE) + .addProcedure(PROCEDURES.PROTECTED) + .addProcedure(PROCEDURES.PUBLIC) + .addProcedure(PROCEDURES.PARAMETERS) + .addProcedure(PROCEDURES.BROKEN) + .addProcedure(PROCEDURES.CONTEXT) + .addProcedure(PROCEDURES.VERSIONED) +}; diff --git a/packages/runtime/test/_fixtures/models/Version.fixture.ts b/packages/execution/test/models/fixtures/versions.fixture.ts similarity index 81% rename from packages/runtime/test/_fixtures/models/Version.fixture.ts rename to packages/execution/test/models/fixtures/versions.fixture.ts index 893dd1e9..ef7b56de 100644 --- a/packages/runtime/test/_fixtures/models/Version.fixture.ts +++ b/packages/execution/test/models/fixtures/versions.fixture.ts @@ -1,7 +1,7 @@ import Version from '../../../src/models/Version'; -const VERSIONS = +export const VERSIONS = { DEFAULT: Version.DEFAULT, ACTUAL: new Version(1, 2, 3), @@ -11,7 +11,3 @@ const VERSIONS = MAJOR: new Version(1, 0, 0), MAJOR_MINOR: new Version(1, 2, 0) }; - -Object.freeze(VERSIONS); - -export { VERSIONS }; diff --git a/packages/runtime/test/utils/ArgumentConstructor.spec.ts b/packages/execution/test/utils/ArgumentConstructor.spec.ts similarity index 99% rename from packages/runtime/test/utils/ArgumentConstructor.spec.ts rename to packages/execution/test/utils/ArgumentConstructor.spec.ts index 05ef9b44..0c78a5a1 100644 --- a/packages/runtime/test/utils/ArgumentConstructor.spec.ts +++ b/packages/execution/test/utils/ArgumentConstructor.spec.ts @@ -7,7 +7,7 @@ import UnknownParameter from '../../src/errors/UnknownParameter'; import ArgumentConstructor from '../../src/utils/ArgumentConstructor'; -import { PARAMETERS, ARGUMENTS } from '../_fixtures/utils/ArgumentConstructor.fixture'; +import { PARAMETERS, ARGUMENTS } from './fixtures'; const argumentConstructor = new ArgumentConstructor(); diff --git a/packages/runtime/test/utils/VersionParser.spec.ts b/packages/execution/test/utils/VersionParser.spec.ts similarity index 66% rename from packages/runtime/test/utils/VersionParser.spec.ts rename to packages/execution/test/utils/VersionParser.spec.ts index bd8d5895..cef39596 100644 --- a/packages/runtime/test/utils/VersionParser.spec.ts +++ b/packages/execution/test/utils/VersionParser.spec.ts @@ -2,52 +2,54 @@ import { describe, expect, it } from 'vitest'; import InvalidVersionNumber from '../../src/errors/InvalidVersionNumber'; -import VersionParser from '../../src/utils/VersionParser'; +import VersionParser from '../../src/utils/versionParser'; -import { VERSIONS } from '../_fixtures/models/Version.fixture'; +import { VERSIONS } from './fixtures'; -describe('utils/VersionParser', () => +const versionParser = new VersionParser(); + +describe('utils/versionParser', () => { describe('.parse(number)', () => { it('should parse a default version for an empty string', () => { - const version = VersionParser.parse(''); + const version = versionParser.parse(''); expect(version).toEqual(VERSIONS.DEFAULT); }); it('should parse a major number', () => { - const version = VersionParser.parse('1'); + const version = versionParser.parse('1'); expect(version).toEqual(VERSIONS.MAJOR); }); it('should parse a major.minor number', () => { - const version = VersionParser.parse('1.2'); + const version = versionParser.parse('1.2'); expect(version).toEqual(VERSIONS.MAJOR_MINOR); }); it('should parse a major.minor.patch number', () => { - const version = VersionParser.parse('1.2.3'); + const version = versionParser.parse('1.2.3'); expect(version).toEqual(VERSIONS.ACTUAL); }); it('should not parse an invalid number', () => { - const run = () => VersionParser.parse('1.2.3.4'); + const run = () => versionParser.parse('1.2.3.4'); expect(run).toThrow(new InvalidVersionNumber('1.2.3.4')); }); it('should not parse an invalid number', () => { - const run = () => VersionParser.parse('1.2.a'); + const run = () => versionParser.parse('1.2.a'); expect(run).toThrow(new InvalidVersionNumber('1.2.a')); }); diff --git a/packages/runtime/test/_fixtures/utils/ArgumentConstructor.fixture.ts b/packages/execution/test/utils/fixtures/arguments.fixture.ts similarity index 58% rename from packages/runtime/test/_fixtures/utils/ArgumentConstructor.fixture.ts rename to packages/execution/test/utils/fixtures/arguments.fixture.ts index 01565a69..c4cc4dcd 100644 --- a/packages/runtime/test/_fixtures/utils/ArgumentConstructor.fixture.ts +++ b/packages/execution/test/utils/fixtures/arguments.fixture.ts @@ -1,38 +1,5 @@ -import ArrayParameter from '../../../src/models/ArrayParameter'; -import NamedParameter from '../../../src/models/NamedParameter'; -import ObjectParameter from '../../../src/models/ObjectParameter'; - -const PARAMETERS = -{ - NAMED: [new NamedParameter('id', false), new NamedParameter('name', false), new NamedParameter('age', true)], - ARRAY: [new ArrayParameter([new NamedParameter('query', false), new NamedParameter('sort', true)])], - OBJECT: [new ObjectParameter([new NamedParameter('query', false), new NamedParameter('sort', true)])], - MIXED: [ - new NamedParameter('id', false), - new ArrayParameter([new NamedParameter('name', false), new NamedParameter('age', true)]), - new ObjectParameter([new NamedParameter('query', false), new NamedParameter('sort', true)]) - ], - NESTED_ARRAY: [ - new ArrayParameter([ - new NamedParameter('id', false), - new ArrayParameter([new NamedParameter('name', false), new NamedParameter('age', true)]), - new ObjectParameter([new NamedParameter('query', false), new NamedParameter('sort', false)], undefined, true) - ]) - ], - NESTED_OBJECT: [ - new ObjectParameter([ - new NamedParameter('id', false), - new ArrayParameter([new NamedParameter('name', false), new NamedParameter('age', true)], 'person'), - new ObjectParameter([new NamedParameter('query', false), new NamedParameter('sort', false)], 'filter', true) - ]) - ], - REST: [new NamedParameter('...rest', false)], - REST_ARRAY: [new ArrayParameter([new NamedParameter('name', false), new NamedParameter('...rest', true)])], - REST_OBJECT: [new ObjectParameter([new NamedParameter('name', false), new NamedParameter('...rest', true)])] -}; - -const ARGUMENTS = +export const ARGUMENTS = { NAMED_ALL: new Map(Object.entries({ 'id': 1, 'name': 'John Doe', 'age': 42 })), NAMED_OPTIONAL: new Map(Object.entries({ 'id': 1, 'name': 'John Doe' })), // Misses the age @@ -66,5 +33,3 @@ const ARGUMENTS = OPTIONAL_ARGUMENTS: new Map(Object.entries({ '*id': 1, '*name': 'John Doe', '*age': 42 })), // All arguments are optional OPTIONAL_ARGUMENTS_EXTRA: new Map(Object.entries({ 'id': 1, 'name': 'John Doe', '*additional': 'argument', '*ignore': true })), // Additional optional arguments }; - -export { PARAMETERS, ARGUMENTS }; diff --git a/packages/execution/test/utils/fixtures/index.ts b/packages/execution/test/utils/fixtures/index.ts new file mode 100644 index 00000000..20dc19db --- /dev/null +++ b/packages/execution/test/utils/fixtures/index.ts @@ -0,0 +1,4 @@ + +export * from './arguments.fixture'; +export * from './parameters.fixture'; +export * from './versions.fixture'; diff --git a/packages/execution/test/utils/fixtures/parameters.fixture.ts b/packages/execution/test/utils/fixtures/parameters.fixture.ts new file mode 100644 index 00000000..dac6634b --- /dev/null +++ b/packages/execution/test/utils/fixtures/parameters.fixture.ts @@ -0,0 +1,33 @@ + +import ArrayParameter from '../../../src/models/ArrayParameter'; +import NamedParameter from '../../../src/models/NamedParameter'; +import ObjectParameter from '../../../src/models/ObjectParameter'; + +export const PARAMETERS = +{ + NAMED: [new NamedParameter('id', false), new NamedParameter('name', false), new NamedParameter('age', true)], + ARRAY: [new ArrayParameter([new NamedParameter('query', false), new NamedParameter('sort', true)])], + OBJECT: [new ObjectParameter([new NamedParameter('query', false), new NamedParameter('sort', true)])], + MIXED: [ + new NamedParameter('id', false), + new ArrayParameter([new NamedParameter('name', false), new NamedParameter('age', true)]), + new ObjectParameter([new NamedParameter('query', false), new NamedParameter('sort', true)]) + ], + NESTED_ARRAY: [ + new ArrayParameter([ + new NamedParameter('id', false), + new ArrayParameter([new NamedParameter('name', false), new NamedParameter('age', true)]), + new ObjectParameter([new NamedParameter('query', false), new NamedParameter('sort', false)], undefined, true) + ]) + ], + NESTED_OBJECT: [ + new ObjectParameter([ + new NamedParameter('id', false), + new ArrayParameter([new NamedParameter('name', false), new NamedParameter('age', true)], 'person'), + new ObjectParameter([new NamedParameter('query', false), new NamedParameter('sort', false)], 'filter', true) + ]) + ], + REST: [new NamedParameter('...rest', false)], + REST_ARRAY: [new ArrayParameter([new NamedParameter('name', false), new NamedParameter('...rest', true)])], + REST_OBJECT: [new ObjectParameter([new NamedParameter('name', false), new NamedParameter('...rest', true)])] +}; diff --git a/packages/execution/test/utils/fixtures/versions.fixture.ts b/packages/execution/test/utils/fixtures/versions.fixture.ts new file mode 100644 index 00000000..ef7b56de --- /dev/null +++ b/packages/execution/test/utils/fixtures/versions.fixture.ts @@ -0,0 +1,13 @@ + +import Version from '../../../src/models/Version'; + +export const VERSIONS = +{ + DEFAULT: Version.DEFAULT, + ACTUAL: new Version(1, 2, 3), + EQUAL: new Version(1, 2, 3), + GREATER: new Version(10, 2, 3), + LESSER: new Version(1, 1, 3), + MAJOR: new Version(1, 0, 0), + MAJOR_MINOR: new Version(1, 2, 0) +}; diff --git a/packages/runtime/test/_fixtures/models/Executable.fixture.ts b/packages/runtime/test/_fixtures/models/Executable.fixture.ts deleted file mode 100644 index b33dd7a9..00000000 --- a/packages/runtime/test/_fixtures/models/Executable.fixture.ts +++ /dev/null @@ -1,30 +0,0 @@ - -import { runProcedure } from '../../../src/hooks'; - -const EXECUTABLES = -{ - // General - PRIVATE: () => { return 'private'; }, - PROTECTED: () => { return 'protected'; }, - PUBLIC: () => { return 'public'; }, - PARAMETERS: (mandatory: string, optional = 'default') => { return `${mandatory} ${optional}`; }, - BROKEN: () => { throw new Error('broken'); }, - CONTEXT: () => { return this; }, - V1_0_0: () => { return '1.0.0'; }, - V1_0_5: () => { return '1.0.5'; }, - V1_1_0: () => { return '1.1.0'; }, - - // First segment - FIRST: () => { return 'first'; }, - SECOND: () => { return runProcedure('first', '0.0.0', new Map()); }, // Runs a private task on the same segment - THIRD: () => { return runProcedure('fourth', '0.0.0', new Map()); }, // Runs a public task on another segment - - // Second segment - FOURTH: () => { return 'fourth'; }, - FIFTH: () => { return 'fifth'; }, - SIXTH: () => { return runProcedure('first', '0.0.0', new Map()); }, // Runs a private task on another segment -}; - -Object.freeze(EXECUTABLES); - -export { EXECUTABLES }; diff --git a/packages/runtime/test/_fixtures/models/Segment.fixture.ts b/packages/runtime/test/_fixtures/models/Segment.fixture.ts deleted file mode 100644 index c609126f..00000000 --- a/packages/runtime/test/_fixtures/models/Segment.fixture.ts +++ /dev/null @@ -1,37 +0,0 @@ - -import Segment from '../../../src/models/Segment'; - -import { PROCEDURES } from './Procedure.fixture'; - -const SEGMENTS = -{ - GENERAL: new Segment('general') - .addProcedure(PROCEDURES.PRIVATE) - .addProcedure(PROCEDURES.PROTECTED) - .addProcedure(PROCEDURES.PUBLIC) - .addProcedure(PROCEDURES.PARAMETERS) - .addProcedure(PROCEDURES.BROKEN) - .addProcedure(PROCEDURES.CONTEXT) - .addProcedure(PROCEDURES.VERSIONED), - - FIRST: new Segment('first') - .addProcedure(PROCEDURES.FIRST) - .addProcedure(PROCEDURES.SECOND) - .addProcedure(PROCEDURES.THIRD), - - SECOND: new Segment('second') - .addProcedure(PROCEDURES.FOURTH) - .addProcedure(PROCEDURES.FIFTH) - .addProcedure(PROCEDURES.SIXTH) -}; - -Object.freeze(SEGMENTS); - -const SEGMENT_FILES = -{ - GENERAL: ['private.js', 'public.js', 'parameters.js', 'broken.js', 'context.js', 'versioned.js'], - FIRST: ['first.js', 'second.js', 'third.js'], - SECOND: ['fourth.js', 'fifth.js', 'sixth.js'] -}; - -export { SEGMENTS, SEGMENT_FILES }; diff --git a/packages/runtime/test/_fixtures/utils/ModuleLoader.fixture.ts b/packages/runtime/test/_fixtures/utils/ModuleLoader.fixture.ts deleted file mode 100644 index da831f6f..00000000 --- a/packages/runtime/test/_fixtures/utils/ModuleLoader.fixture.ts +++ /dev/null @@ -1,13 +0,0 @@ - -const moduleImporter = async (specifier: string) => -{ - switch (specifier) - { - case '/root/app/public/app.js': return { default: function app() {} }; - case 'jitar': return { default: class Jitar {} }; - } - - throw Error('Not found'); -}; - -export { moduleImporter }; diff --git a/packages/runtime/test/utils/ClientIdHelper.spec.ts b/packages/runtime/test/utils/ClientIdHelper.spec.ts deleted file mode 100644 index 29ad73af..00000000 --- a/packages/runtime/test/utils/ClientIdHelper.spec.ts +++ /dev/null @@ -1,47 +0,0 @@ - -import { describe, expect, it } from 'vitest'; - -import ClientIdHelper from '../../src/utils/ClientIdHelper'; - -const clientIdHelper = new ClientIdHelper(); - -describe('services/ClientId', () => -{ - describe('.generate()', () => - { - it('should generate a client id', () => - { - const clientId = clientIdHelper.generate(); - - expect(clientId).toMatch(/^CLIENT_\d+$/); - }); - - it('should generate a different client id each time', () => - { - const clientId1 = clientIdHelper.generate(); - const clientId2 = clientIdHelper.generate(); - - expect(clientId1).not.toBe(clientId2); - }); - }); - - describe('.validate(clientId)', () => - { - it('should return true if the client id is valid', () => - { - expect(clientIdHelper.validate('CLIENT_0')).toBe(true); - expect(clientIdHelper.validate('CLIENT_42')).toBe(true); - expect(clientIdHelper.validate('CLIENT_007')).toBe(true); - }); - - it('should return false if the client id is invalid', () => - { - expect(clientIdHelper.validate('CLIENT_')).toBe(false); - expect(clientIdHelper.validate('CLIENT_X')).toBe(false); - expect(clientIdHelper.validate('CLIENT_0a')).toBe(false); - expect(clientIdHelper.validate('CLIENT_0.1')).toBe(false); - expect(clientIdHelper.validate('Client_0')).toBe(false); - expect(clientIdHelper.validate('SERVER_0')).toBe(false); - }); - }); -}); diff --git a/packages/runtime/test/utils/ModuleLoader.spec.ts b/packages/runtime/test/utils/ModuleLoader.spec.ts deleted file mode 100644 index 9ad777d4..00000000 --- a/packages/runtime/test/utils/ModuleLoader.spec.ts +++ /dev/null @@ -1,52 +0,0 @@ - -import { describe, expect, it } from 'vitest'; - -import ModuleNotAccessible from '../../src/errors/ModuleNotAccessible'; -import ModuleNotLoaded from '../../src/errors/ModuleNotLoaded'; -import ModuleLoader from '../../src/utils/ModuleLoader'; - -import { moduleImporter } from '../_fixtures/utils/ModuleLoader.fixture'; - -ModuleLoader.setImporter(moduleImporter); -ModuleLoader.setBaseUrl('/root/app/'); - -describe('utils/ModuleLoader', () => -{ - describe('.load(specifier)', () => - { - it('should load an existing specifier with extension from the base URL', async () => - { - const module = await ModuleLoader.load('./public/app.js'); - - expect(module.default).toBeInstanceOf(Function); - }); - - it('should load an existing specifier without extension from the base URL', async () => - { - const module = await ModuleLoader.load('./public/app'); - - expect(module.default).toBeInstanceOf(Function); - }); - - it('should load a system import specifier', async () => - { - const module = await ModuleLoader.load('jitar'); - - expect(module.default).toBeInstanceOf(Function); - }); - - it('should not load non-existing specifier from the base URL', () => - { - const run = () => ModuleLoader.load('./public/non-existing.js'); - - expect(run).rejects.toEqual(new ModuleNotLoaded('public/non-existing.js', 'Not found')); - }); - - it('should not allow URLs outside the base URL', () => - { - const run = () => ModuleLoader.load('../secrets.js'); - - expect(run).rejects.toEqual(new ModuleNotAccessible('../secrets.js')); - }); - }); -}); diff --git a/packages/runtime/test/utils/UrlRewriter.spec.ts b/packages/runtime/test/utils/UrlRewriter.spec.ts deleted file mode 100644 index a3415cec..00000000 --- a/packages/runtime/test/utils/UrlRewriter.spec.ts +++ /dev/null @@ -1,63 +0,0 @@ - -import { describe, expect, it } from 'vitest'; - -import UrlRewriter from '../../src/utils/UrlRewriter'; - -const BASE_PATH = '/base/path/'; -const MY_FILE = 'sub/my-file.ext'; -const FULL_PATH = '/base/path/sub/my-file.ext'; - -describe('runtime/utils/UrlRewriter', () => -{ - describe('.addBase(url, base)', () => - { - it('should add the base to the url', () => - { - const result = UrlRewriter.addBase(MY_FILE, BASE_PATH); - - expect(result).toBe(FULL_PATH); - }); - - it('should add the base to the url without a slash', () => - { - const result = UrlRewriter.addBase(MY_FILE, '/base/path'); - - expect(result).toBe(FULL_PATH); - }); - - it('should add the base to the url with trailing base slash', () => - { - const result = UrlRewriter.addBase('/sub/my-file.ext', BASE_PATH); - - expect(result).toBe(FULL_PATH); - }); - - it('should remove last path part from the base', () => - { - const result = UrlRewriter.addBase('../sub/my-file.ext', BASE_PATH); - - expect(result).toBe('/base/sub/my-file.ext'); - }); - - it('should remove last path parts from the base', () => - { - const result = UrlRewriter.addBase('../../../sub/my-file.ext', '/base/path/to/folder'); - - expect(result).toBe('/base/sub/my-file.ext'); - }); - - it('should remove all parts from the base', () => - { - const result = UrlRewriter.addBase('../../../sub/my-file.ext', BASE_PATH); - - expect(result).toBe(MY_FILE); - }); - - it('should add the base to the url', () => - { - const result = UrlRewriter.addBase('./sub/my-file.ext', BASE_PATH); - - expect(result).toBe(FULL_PATH); - }); - }); -});