mirror of
https://gitlab.com/mobicoop/v3/service/matcher.git
synced 2026-01-01 08:22:41 +00:00
tests and refactor for ad geography
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { Coordinates } from '../../domain/entities/coordinates';
|
||||
import { Coordinate } from '../../domain/entities/coordinate';
|
||||
import { IEncodeDirection } from '../../domain/interfaces/direction-encoder.interface';
|
||||
|
||||
export class PostgresDirectionEncoder implements IEncodeDirection {
|
||||
encode = (coordinates: Coordinates[]): string =>
|
||||
encode = (coordinates: Coordinate[]): string =>
|
||||
[
|
||||
"'LINESTRING(",
|
||||
coordinates.map((point) => [point.lon, point.lat].join(' ')).join(),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { AutoMap } from '@automapper/classes';
|
||||
import { IsLatitude, IsLongitude, IsNumber } from 'class-validator';
|
||||
|
||||
export class Coordinates {
|
||||
export class Coordinate {
|
||||
constructor(lon: number, lat: number) {
|
||||
this.lon = lon;
|
||||
this.lat = lat;
|
||||
@@ -1,12 +1,12 @@
|
||||
import { Coordinates } from './coordinates';
|
||||
import { Coordinate } from './coordinate';
|
||||
|
||||
export class SpacetimePoint {
|
||||
coordinates: Coordinates;
|
||||
coordinate: Coordinate;
|
||||
duration: number;
|
||||
distance: number;
|
||||
|
||||
constructor(coordinates: Coordinates, duration: number, distance: number) {
|
||||
this.coordinates = coordinates;
|
||||
constructor(coordinate: Coordinate, duration: number, distance: number) {
|
||||
this.coordinate = coordinate;
|
||||
this.duration = duration;
|
||||
this.distance = distance;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Coordinates } from '../entities/coordinates';
|
||||
import { Coordinate } from '../entities/coordinate';
|
||||
|
||||
export interface IEncodeDirection {
|
||||
encode(coordinates: Coordinates[]): string;
|
||||
encode(coordinates: Coordinate[]): string;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { PointType } from './point-type.enum';
|
||||
import { Coordinates } from '../entities/coordinates';
|
||||
import { Coordinate } from '../entities/coordinate';
|
||||
|
||||
export type Point = Coordinates & {
|
||||
export type Point = Coordinate & {
|
||||
type?: PointType;
|
||||
};
|
||||
|
||||
8
src/modules/geography/tests/unit/coordinate.spec.ts
Normal file
8
src/modules/geography/tests/unit/coordinate.spec.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Coordinate } from '../../domain/entities/coordinate';
|
||||
|
||||
describe('Coordinate entity', () => {
|
||||
it('should be defined', () => {
|
||||
const coordinate: Coordinate = new Coordinate(6, 47);
|
||||
expect(coordinate).toBeDefined();
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,30 @@
|
||||
import { PostgresDirectionEncoder } from '../../adapters/secondaries/postgres-direction-encoder';
|
||||
import { Coordinate } from '../../domain/entities/coordinate';
|
||||
|
||||
describe('Postgres direction encoder', () => {
|
||||
it('should be defined', () => {
|
||||
const postgresDirectionEncoder: PostgresDirectionEncoder =
|
||||
new PostgresDirectionEncoder();
|
||||
expect(postgresDirectionEncoder).toBeDefined();
|
||||
});
|
||||
it('should encode coordinates to a postgres direction', () => {
|
||||
const postgresDirectionEncoder: PostgresDirectionEncoder =
|
||||
new PostgresDirectionEncoder();
|
||||
const coordinates: Coordinate[] = [
|
||||
{
|
||||
lon: 6,
|
||||
lat: 47,
|
||||
},
|
||||
{
|
||||
lon: 6.1,
|
||||
lat: 47.1,
|
||||
},
|
||||
{
|
||||
lon: 6.2,
|
||||
lat: 47.2,
|
||||
},
|
||||
];
|
||||
const direction = postgresDirectionEncoder.encode(coordinates);
|
||||
expect(direction).toBe("'LINESTRING(6 47,6.1 47.1,6.2 47.2)'");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user