Skip to content

Commit

Permalink
#296: refactored execution tests
Browse files Browse the repository at this point in the history
  • Loading branch information
petermasking committed Sep 26, 2024
1 parent f78def7 commit c1834fe
Show file tree
Hide file tree
Showing 23 changed files with 119 additions and 345 deletions.
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;

Expand Down
Original file line number Diff line number Diff line change
@@ -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;

Expand Down
13 changes: 13 additions & 0 deletions packages/execution/test/models/fixtures/executables.fixture.ts
Original file line number Diff line number Diff line change
@@ -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'; }
};
Original file line number Diff line number Diff line change
@@ -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),
Expand All @@ -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 };
7 changes: 7 additions & 0 deletions packages/execution/test/models/fixtures/index.ts
Original file line number Diff line number Diff line change
@@ -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';
Original file line number Diff line number Diff line change
@@ -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 };
Original file line number Diff line number Diff line change
@@ -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 };
16 changes: 16 additions & 0 deletions packages/execution/test/models/fixtures/segments.fixture.ts
Original file line number Diff line number Diff line change
@@ -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)
};
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

import Version from '../../../src/models/Version';

const VERSIONS =
export const VERSIONS =
{
DEFAULT: Version.DEFAULT,
ACTUAL: new Version(1, 2, 3),
Expand All @@ -11,7 +11,3 @@ const VERSIONS =
MAJOR: new Version(1, 0, 0),
MAJOR_MINOR: new Version(1, 2, 0)
};

Object.freeze(VERSIONS);

export { VERSIONS };
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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'));
});
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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 };
4 changes: 4 additions & 0 deletions packages/execution/test/utils/fixtures/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

export * from './arguments.fixture';
export * from './parameters.fixture';
export * from './versions.fixture';
33 changes: 33 additions & 0 deletions packages/execution/test/utils/fixtures/parameters.fixture.ts
Original file line number Diff line number Diff line change
@@ -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)])]
};
13 changes: 13 additions & 0 deletions packages/execution/test/utils/fixtures/versions.fixture.ts
Original file line number Diff line number Diff line change
@@ -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)
};
Loading

0 comments on commit c1834fe

Please sign in to comment.