spacetime VO tests
This commit is contained in:
parent
65dd8d64b1
commit
571699a66c
|
@ -1,6 +1,6 @@
|
|||
import { GeorouterPort } from '../application/ports/georouter.port';
|
||||
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';
|
||||
|
||||
// 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:
|
||||
* Value Objects with multiple properties can contain
|
||||
|
@ -38,5 +42,9 @@ export class SpacetimePoint extends ValueObject<SpacetimePointProps> {
|
|||
throw new ArgumentInvalidException(
|
||||
'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