2024-05-19 11:38:38 +02:00
|
|
|
import request from "supertest"
|
|
|
|
import app from "../src/app"
|
|
|
|
import { Server, IncomingMessage, ServerResponse } from "http"
|
|
|
|
import * as dotenv from "dotenv"
|
|
|
|
|
|
|
|
dotenv.config({path: '../../.env'})
|
|
|
|
const port = parseInt(process.env.BAR_PORT || '3000')
|
|
|
|
|
|
|
|
let serveur : Server<typeof IncomingMessage, typeof ServerResponse>
|
|
|
|
|
|
|
|
describe("Test the otm city path", () => {
|
|
|
|
|
|
|
|
test("It should response the 200 code for GET method", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/city")
|
|
|
|
.query({'name':'La roche sur yon'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.statusCode).toBe(200)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the GET method with content", done => {
|
|
|
|
const out = {
|
|
|
|
"type": "FeatureCollection",
|
|
|
|
"features": [{
|
|
|
|
"type": "Feature",
|
|
|
|
"id": "562635",
|
|
|
|
"geometry": {
|
|
|
|
"type": "Point",
|
|
|
|
"coordinates": [
|
|
|
|
-1.4344594,
|
|
|
|
46.6686478
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"properties": {
|
|
|
|
"xid": "N4032296324",
|
|
|
|
"name": "Le 27 point carré",
|
|
|
|
"dist": 236.40360026,
|
|
|
|
"rate": 1,
|
|
|
|
"osm": "node/4032296324",
|
|
|
|
"kinds": "foods,bars,tourist_facilities"
|
|
|
|
}
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
|
|
|
|
request(app)
|
|
|
|
.get("/otm/city")
|
|
|
|
.query({'name':'La roche sur yon', "radius": 240})
|
|
|
|
.then(response => {
|
|
|
|
console.log(response.text)
|
|
|
|
expect(response.text).toEqual(JSON.stringify(out))
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the 400 code for GET method", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/city")
|
|
|
|
.then(response => {
|
|
|
|
console.log(response.text)
|
|
|
|
expect(response.statusCode).toBe(400)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the 200 code for GET method", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/radius")
|
|
|
|
.query({'lon':'-1.4344594', 'lat' : '46.6686478', 'radius': '10'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.statusCode).toBe(200)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the 200 code for GET method (default radius)", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/radius")
|
|
|
|
.query({'lon':'-1.4344594', 'lat' : '46.6686478'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.statusCode).toBe(200)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the 400 code for GET method (missing lon and lat)", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/radius")
|
|
|
|
.then(response => {
|
|
|
|
expect(response.statusCode).toBe(400)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
test("Get bar in radius from API", done => {
|
|
|
|
const out = {
|
|
|
|
"type": "FeatureCollection",
|
|
|
|
"features": [{
|
|
|
|
"type": "Feature",
|
|
|
|
"id": "562635",
|
|
|
|
"geometry": {
|
|
|
|
"type": "Point",
|
|
|
|
"coordinates": [
|
|
|
|
-1.4344594,
|
|
|
|
46.6686478
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"properties": {
|
|
|
|
"xid": "N4032296324",
|
|
|
|
"name": "Le 27 point carré",
|
|
|
|
"dist": 0.17652159,
|
|
|
|
"rate": 1,
|
|
|
|
"osm": "node/4032296324",
|
|
|
|
"kinds": "foods,bars,tourist_facilities"
|
|
|
|
}
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
request(app)
|
|
|
|
.get("/otm/radius")
|
|
|
|
.query({'lon':'-1.4344594', 'lat' : '46.6686478', 'radius': '10'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.text).toEqual(JSON.stringify(out))
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the 200 code for GET method", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/poidetaill")
|
|
|
|
.query({'id':'562635'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.statusCode).toBe(200)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("Get bar in radius from API", done => {
|
|
|
|
const out = {
|
|
|
|
"xid": "N4032296324",
|
|
|
|
"name": "Le 27 point carré",
|
|
|
|
"address": {
|
|
|
|
"road": "Rue Raymond Poincaré",
|
|
|
|
"town": "La Roche-sur-Yon",
|
|
|
|
"state": "Pays de la Loire",
|
|
|
|
"county": "La Roche-sur-Yon",
|
|
|
|
"suburb": "Zola",
|
|
|
|
"country": "France",
|
|
|
|
"postcode": "85000",
|
|
|
|
"country_code": "fr",
|
|
|
|
"house_number": "27",
|
|
|
|
"neighbourhood": "Cité des Forges"
|
|
|
|
},
|
|
|
|
"rate": "1",
|
|
|
|
"osm": "node/4032296324",
|
|
|
|
"kinds": "foods,bars,tourist_facilities",
|
|
|
|
"sources": {
|
|
|
|
"geometry": "osm",
|
|
|
|
"attributes": [
|
|
|
|
"osm"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"otm": "https://opentripmap.com/en/card/N4032296324",
|
|
|
|
"point": {
|
|
|
|
"lon": -1.4344594478607178,
|
|
|
|
"lat": 46.66864776611328
|
|
|
|
}
|
|
|
|
}
|
|
|
|
request(app)
|
|
|
|
.get("/otm/poidetaill")
|
|
|
|
.query({'id':'562635'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.text).toEqual(JSON.stringify(out))
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the 400 code for GET method (no id)", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/poidetaill")
|
|
|
|
.then(response => {
|
|
|
|
expect(response.statusCode).toBe(400)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the 200 code for GET method", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/box")
|
|
|
|
.query({'lon1':'-1.435199','lon2':'-1.43519', 'lat1':'46.668460', 'lat2':'46.668461'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.statusCode).toBe(200)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("Get bar in box from API", done => {
|
|
|
|
const out = {
|
|
|
|
"type": "FeatureCollection",
|
|
|
|
"features": [
|
|
|
|
{
|
|
|
|
"type": "Feature",
|
|
|
|
"id": "562633",
|
|
|
|
"geometry": {
|
|
|
|
"type": "Point",
|
|
|
|
"coordinates": [
|
|
|
|
-1.435197,
|
|
|
|
46.6684608
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"properties": {
|
|
|
|
"xid": "N4032296323",
|
|
|
|
"name": "Le Cube",
|
|
|
|
"rate": 1,
|
|
|
|
"osm": "node/4032296323",
|
|
|
|
"kinds": "foods,cafes,tourist_facilities"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
2024-06-07 18:21:18 +02:00
|
|
|
function sleep(milliseconds: number) {
|
|
|
|
const date = Date.now();
|
|
|
|
let currentDate = null;
|
|
|
|
do {
|
|
|
|
currentDate = Date.now();
|
|
|
|
} while (currentDate - date < milliseconds);
|
|
|
|
}
|
|
|
|
sleep(2000);
|
2024-05-19 11:38:38 +02:00
|
|
|
request(app)
|
|
|
|
.get("/otm/box")
|
|
|
|
.query({'lon1':'-1.435199','lon2':'-1.43519', 'lat1':'46.668460', 'lat2':'46.668461'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.text).toEqual(JSON.stringify(out))
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("Get bar in box from API lat reversed", done => {
|
|
|
|
const out = {
|
|
|
|
"type": "FeatureCollection",
|
|
|
|
"features": [
|
|
|
|
{
|
|
|
|
"type": "Feature",
|
|
|
|
"id": "562633",
|
|
|
|
"geometry": {
|
|
|
|
"type": "Point",
|
|
|
|
"coordinates": [
|
|
|
|
-1.435197,
|
|
|
|
46.6684608
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"properties": {
|
|
|
|
"xid": "N4032296323",
|
|
|
|
"name": "Le Cube",
|
|
|
|
"rate": 1,
|
|
|
|
"osm": "node/4032296323",
|
|
|
|
"kinds": "foods,cafes,tourist_facilities"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
request(app)
|
|
|
|
.get("/otm/box")
|
|
|
|
.query({'lon1':'-1.435199','lon2':'-1.43519', 'lat2':'46.668460', 'lat1':'46.668461'})
|
|
|
|
.then(response => {
|
|
|
|
expect(response.text).toEqual(JSON.stringify(out))
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
test("It should response the 400 code for GET method (no coordonaite)", done => {
|
|
|
|
request(app)
|
|
|
|
.get("/otm/box")
|
|
|
|
.then(response => {
|
|
|
|
expect(response.statusCode).toBe(400)
|
|
|
|
done()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|