spacetime VO tests
This commit is contained in:
parent
65dd8d64b1
commit
571699a66c
|
@ -1,6 +1,6 @@
|
||||||
import { GeorouterPort } from '../application/ports/georouter.port';
|
import { GeorouterPort } from '../application/ports/georouter.port';
|
||||||
import { GeorouterSettings } from '../application/types/georouter-settings.type';
|
import { GeorouterSettings } from '../application/types/georouter-settings.type';
|
||||||
import { SpacetimePointProps } from './value-objects/timepoint.value-object';
|
import { SpacetimePointProps } from './value-objects/spacetime-point.value-object';
|
||||||
import { WaypointProps } from './value-objects/waypoint.value-object';
|
import { WaypointProps } from './value-objects/waypoint.value-object';
|
||||||
|
|
||||||
// All properties that a Route has
|
// All properties that a Route has
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
import { ArgumentInvalidException, ValueObject } from '@mobicoop/ddd-library';
|
import {
|
||||||
|
ArgumentInvalidException,
|
||||||
|
ArgumentOutOfRangeException,
|
||||||
|
ValueObject,
|
||||||
|
} from '@mobicoop/ddd-library';
|
||||||
|
|
||||||
/** Note:
|
/** Note:
|
||||||
* Value Objects with multiple properties can contain
|
* Value Objects with multiple properties can contain
|
||||||
|
@ -38,5 +42,9 @@ export class SpacetimePoint extends ValueObject<SpacetimePointProps> {
|
||||||
throw new ArgumentInvalidException(
|
throw new ArgumentInvalidException(
|
||||||
'distance must be greater than or equal to 0',
|
'distance must be greater than or equal to 0',
|
||||||
);
|
);
|
||||||
|
if (props.lon > 180 || props.lon < -180)
|
||||||
|
throw new ArgumentOutOfRangeException('lon must be between -180 and 180');
|
||||||
|
if (props.lat > 90 || props.lat < -90)
|
||||||
|
throw new ArgumentOutOfRangeException('lat must be between -90 and 90');
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
import {
|
||||||
|
ArgumentInvalidException,
|
||||||
|
ArgumentOutOfRangeException,
|
||||||
|
} from '@mobicoop/ddd-library';
|
||||||
|
import { SpacetimePoint } from '@modules/geography/core/domain/value-objects/spacetime-point.value-object';
|
||||||
|
|
||||||
|
describe('Timepoint value object', () => {
|
||||||
|
it('should create a timepoint value object', () => {
|
||||||
|
const timepointVO = new SpacetimePoint({
|
||||||
|
lon: 48.689445,
|
||||||
|
lat: 6.17651,
|
||||||
|
duration: 150,
|
||||||
|
distance: 12000,
|
||||||
|
});
|
||||||
|
expect(timepointVO.duration).toBe(150);
|
||||||
|
expect(timepointVO.distance).toBe(12000);
|
||||||
|
expect(timepointVO.lon).toBe(48.689445);
|
||||||
|
expect(timepointVO.lat).toBe(6.17651);
|
||||||
|
});
|
||||||
|
it('should throw an exception if longitude is invalid', () => {
|
||||||
|
try {
|
||||||
|
new SpacetimePoint({
|
||||||
|
lon: 348.689445,
|
||||||
|
lat: 6.17651,
|
||||||
|
duration: 150,
|
||||||
|
distance: 12000,
|
||||||
|
});
|
||||||
|
} catch (e: any) {
|
||||||
|
expect(e).toBeInstanceOf(ArgumentOutOfRangeException);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
new SpacetimePoint({
|
||||||
|
lon: -348.689445,
|
||||||
|
lat: 6.17651,
|
||||||
|
duration: 150,
|
||||||
|
distance: 12000,
|
||||||
|
});
|
||||||
|
} catch (e: any) {
|
||||||
|
expect(e).toBeInstanceOf(ArgumentOutOfRangeException);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
it('should throw an exception if latitude is invalid', () => {
|
||||||
|
try {
|
||||||
|
new SpacetimePoint({
|
||||||
|
lon: 48.689445,
|
||||||
|
lat: 96.17651,
|
||||||
|
duration: 150,
|
||||||
|
distance: 12000,
|
||||||
|
});
|
||||||
|
} catch (e: any) {
|
||||||
|
expect(e).toBeInstanceOf(ArgumentOutOfRangeException);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
new SpacetimePoint({
|
||||||
|
lon: 48.689445,
|
||||||
|
lat: -96.17651,
|
||||||
|
duration: 150,
|
||||||
|
distance: 12000,
|
||||||
|
});
|
||||||
|
} catch (e: any) {
|
||||||
|
expect(e).toBeInstanceOf(ArgumentOutOfRangeException);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
it('should throw an exception if distance is invalid', () => {
|
||||||
|
try {
|
||||||
|
new SpacetimePoint({
|
||||||
|
lon: 48.689445,
|
||||||
|
lat: 6.17651,
|
||||||
|
duration: 150,
|
||||||
|
distance: -12000,
|
||||||
|
});
|
||||||
|
} catch (e: any) {
|
||||||
|
expect(e).toBeInstanceOf(ArgumentInvalidException);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
it('should throw an exception if duration is invalid', () => {
|
||||||
|
try {
|
||||||
|
new SpacetimePoint({
|
||||||
|
lon: 48.689445,
|
||||||
|
lat: 6.17651,
|
||||||
|
duration: -150,
|
||||||
|
distance: 12000,
|
||||||
|
});
|
||||||
|
} catch (e: any) {
|
||||||
|
expect(e).toBeInstanceOf(ArgumentInvalidException);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue