mapcomplete/test/Logic/OSM/OsmObject.spec.ts

99 lines
4.1 KiB
TypeScript

import { describe } from "mocha"
import { expect } from "chai"
import { OsmObject } from "../../../Logic/Osm/OsmObject"
import { Utils } from "../../../Utils"
import ScriptUtils from "../../../scripts/ScriptUtils"
import { readFileSync } from "fs"
describe("OsmObject", () => {
describe("download referencing ways", () => {
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/node/1124134958/ways",
{
version: "0.6",
generator: "CGImap 0.8.6 (49805 spike-06.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [
{
type: "way",
id: 97038428,
timestamp: "2019-06-19T12:26:24Z",
version: 6,
changeset: 71399984,
user: "Pieter Vander Vennet",
uid: 3818858,
nodes: [1124134958, 323729212, 323729351, 2542460408, 187073405],
tags: {
highway: "residential",
name: "Brugs-Kerkhofstraat",
"sett:pattern": "arc",
surface: "sett",
},
},
{
type: "way",
id: 97038434,
timestamp: "2019-06-19T12:26:24Z",
version: 5,
changeset: 71399984,
user: "Pieter Vander Vennet",
uid: 3818858,
nodes: [1124134958, 1124135024, 187058607],
tags: {
bicycle: "use_sidepath",
highway: "residential",
name: "Kerkhofblommenstraat",
"sett:pattern": "arc",
surface: "sett",
},
},
{
type: "way",
id: 97038435,
timestamp: "2017-12-21T21:41:08Z",
version: 4,
changeset: 54826837,
user: "Jakka",
uid: 2403313,
nodes: [1124134958, 2576628889, 1124135035, 5298371485, 5298371495],
tags: {
bicycle: "use_sidepath",
highway: "residential",
name: "Kerkhofblommenstraat",
},
},
{
type: "way",
id: 251446313,
timestamp: "2019-01-07T19:22:47Z",
version: 4,
changeset: 66106872,
user: "M!dgard",
uid: 763799,
nodes: [1124134958, 5243143198, 4555715455],
tags: { foot: "yes", highway: "service" },
},
],
}
)
it("should download referencing ways", async () => {
const ways = await OsmObject.DownloadReferencingWays("node/1124134958")
expect(ways).not.undefined
expect(ways).length(4)
})
it("should download full OSM-relations", async () => {
ScriptUtils.fixUtils()
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/relation/5759328/full",
JSON.parse(readFileSync("./test/data/relation_5759328.json", "UTF-8"))
)
const r = await OsmObject.DownloadObjectAsync("relation/5759328").then((x) => x)
const geojson = r.asGeoJson()
expect(geojson.geometry.type).eq("MultiPolygon")
})
})
})