tests and refactor for ad geography

This commit is contained in:
sbriat
2023-05-22 11:25:09 +02:00
parent e950efe221
commit 17acaa449c
14 changed files with 264 additions and 80 deletions

View File

@@ -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(),

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
};

View 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();
});
});

View File

@@ -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)'");
});
});