ratrapage_T-WEB/Express/barAndCafe/test/openTripMaps.test.ts

272 lines
7.9 KiB
TypeScript
Raw Normal View History

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"
}
}
]
}
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()
})
})
})