import { Utils } from "../../../../src/Utils" import SplitAction from "../../../../src/Logic/Osm/Actions/SplitAction" import { Changes } from "../../../../src/Logic/Osm/Changes" import { describe, expect, it } from "vitest" import { OsmConnection } from "../../../../src/Logic/Osm/OsmConnection" import { ImmutableStore } from "../../../../src/Logic/UIEventSource" describe("SplitAction", () => { { // Setup of download Utils.injectJsonDownloadForTests( "https://www.openstreetmap.org/api/0.6/way/941079939/full", { version: "0.6", generator: "CGImap 0.8.5 (957273 spike-08.openstreetmap.org)", copyright: "OpenStreetMap and contributors", attribution: "http://www.openstreetmap.org/copyright", license: "http://opendatacommons.org/licenses/odbl/1-0/", elements: [ { type: "node", id: 6490126559, lat: 51.2332219, lon: 3.1429387, timestamp: "2021-05-09T19:04:53Z", version: 2, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { highway: "street_lamp", power: "pole", support: "pole" }, }, { type: "node", id: 8715440363, lat: 51.2324011, lon: 3.1367377, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { fixme: "continue" }, }, { type: "node", id: 8715440364, lat: 51.232455, lon: 3.1368759, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440365, lat: 51.2325883, lon: 3.1373986, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440366, lat: 51.232688, lon: 3.1379837, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440367, lat: 51.2327354, lon: 3.1385649, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440368, lat: 51.2327042, lon: 3.1392187, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { highway: "street_lamp", power: "pole", support: "pole" }, }, { type: "node", id: 8715440369, lat: 51.2323902, lon: 3.139353, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440370, lat: 51.2321027, lon: 3.139601, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { highway: "street_lamp", power: "pole", ref: "242", support: "pole", }, }, { type: "node", id: 8715440371, lat: 51.2322614, lon: 3.1401564, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440372, lat: 51.232378, lon: 3.1407909, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440373, lat: 51.2325532, lon: 3.1413659, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440374, lat: 51.2327611, lon: 3.1418877, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "node", id: 8715440375, lat: 51.2330037, lon: 3.142418, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, tags: { power: "pole" }, }, { type: "way", id: 941079939, timestamp: "2021-05-09T19:04:53Z", version: 1, changeset: 104407928, user: "M!dgard", uid: 763799, nodes: [ 6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370, 8715440369, 8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363, ], tags: { power: "minor_line" }, }, ], } ) Utils.injectJsonDownloadForTests( "https://www.openstreetmap.org/api/0.6/way/941079939/relations", { version: "0.6", generator: "CGImap 0.8.5 (2419440 spike-07.openstreetmap.org)", copyright: "OpenStreetMap and contributors", attribution: "http://www.openstreetmap.org/copyright", license: "http://opendatacommons.org/licenses/odbl/1-0/", elements: [], } ) Utils.injectJsonDownloadForTests( "https://www.openstreetmap.org/api/0.6/way/295132739/full", { version: "0.6", generator: "CGImap 0.8.5 (3138407 spike-07.openstreetmap.org)", copyright: "OpenStreetMap and contributors", attribution: "http://www.openstreetmap.org/copyright", license: "http://opendatacommons.org/licenses/odbl/1-0/", elements: [ { type: "node", id: 170497153, lat: 51.1825167, lon: 3.2487885, timestamp: "2011-11-18T16:33:43Z", version: 5, changeset: 9865255, user: "TripleBee", uid: 497177, }, { type: "node", id: 170497155, lat: 51.1817632, lon: 3.2472706, timestamp: "2011-11-18T16:33:43Z", version: 5, changeset: 9865255, user: "TripleBee", uid: 497177, }, { type: "node", id: 170497157, lat: 51.1815203, lon: 3.2465569, timestamp: "2011-11-18T16:33:43Z", version: 5, changeset: 9865255, user: "TripleBee", uid: 497177, }, { type: "node", id: 170497158, lat: 51.1812261, lon: 3.2454261, timestamp: "2011-11-18T16:33:43Z", version: 5, changeset: 9865255, user: "TripleBee", uid: 497177, }, { type: "node", id: 170497160, lat: 51.1810957, lon: 3.244303, timestamp: "2011-11-18T16:33:43Z", version: 5, changeset: 9865255, user: "TripleBee", uid: 497177, }, { type: "node", id: 1507524573, lat: 51.1810778, lon: 3.2437148, timestamp: "2011-11-18T16:33:36Z", version: 1, changeset: 9865255, user: "TripleBee", uid: 497177, }, { type: "node", id: 1507524582, lat: 51.182113, lon: 3.2481284, timestamp: "2011-11-18T16:33:37Z", version: 1, changeset: 9865255, user: "TripleBee", uid: 497177, }, { type: "node", id: 1507524610, lat: 51.1811645, lon: 3.2450828, timestamp: "2011-11-18T16:33:38Z", version: 1, changeset: 9865255, user: "TripleBee", uid: 497177, }, { type: "node", id: 1575932830, lat: 51.1811153, lon: 3.2431503, timestamp: "2019-05-04T22:44:13Z", version: 2, changeset: 69891295, user: "Pieter Vander Vennet", uid: 3818858, }, { type: "node", id: 3208166178, lat: 51.1810837, lon: 3.243909, timestamp: "2014-11-27T20:23:10Z", version: 1, changeset: 27076816, user: "JanFi", uid: 672253, }, { type: "node", id: 3208166179, lat: 51.1812062, lon: 3.2453151, timestamp: "2014-11-27T20:23:10Z", version: 1, changeset: 27076816, user: "JanFi", uid: 672253, }, { type: "node", id: 4524321710, lat: 51.1820656, lon: 3.2480253, timestamp: "2017-12-09T18:56:37Z", version: 2, changeset: 54493928, user: "CacherB", uid: 1999108, }, { type: "node", id: 5273988967, lat: 51.182659, lon: 3.249004, timestamp: "2017-12-09T18:40:21Z", version: 1, changeset: 54493533, user: "CacherB", uid: 1999108, }, { type: "node", id: 6448669326, lat: 51.1811346, lon: 3.242891, timestamp: "2019-05-04T22:44:12Z", version: 1, changeset: 69891295, user: "Pieter Vander Vennet", uid: 3818858, tags: { barrier: "bollard" }, }, { type: "way", id: 295132739, timestamp: "2021-07-29T21:14:53Z", version: 17, changeset: 108847202, user: "kaart_fietser", uid: 11022240, nodes: [ 5273988967, 170497153, 1507524582, 4524321710, 170497155, 170497157, 170497158, 3208166179, 1507524610, 170497160, 3208166178, 1507524573, 1575932830, 6448669326, ], tags: { highway: "cycleway", name: "Abdijenroute", railway: "abandoned", surface: "compacted", }, }, ], } ) Utils.injectJsonDownloadForTests( "https://www.openstreetmap.org/api/0.6/way/295132739/relations", // Mimick that there are no relations relation is missing { version: "0.6", generator: "CGImap 0.8.5 (2935793 spike-07.openstreetmap.org)", copyright: "OpenStreetMap and contributors", attribution: "http://www.openstreetmap.org/copyright", license: "http://opendatacommons.org/licenses/odbl/1-0/", elements: [], } ) Utils.injectJsonDownloadForTests( "https://www.openstreetmap.org/api/0.6/way/61435323/full", { version: "0.6", generator: "CGImap 0.8.5 (53092 spike-08.openstreetmap.org)", copyright: "OpenStreetMap and contributors", attribution: "http://www.openstreetmap.org/copyright", license: "http://opendatacommons.org/licenses/odbl/1-0/", elements: [ { type: "node", id: 766990983, lat: 51.2170219, lon: 3.2022337, timestamp: "2021-04-26T15:48:22Z", version: 6, changeset: 103647857, user: "M!dgard", uid: 763799, }, { type: "node", id: 766990985, lat: 51.2169574, lon: 3.2017548, timestamp: "2016-07-05T22:41:12Z", version: 6, changeset: 40511250, user: "M!dgard", uid: 763799, }, { type: "node", id: 8669018379, lat: 51.2169592, lon: 3.2017683, timestamp: "2021-04-26T15:48:22Z", version: 1, changeset: 103647857, user: "M!dgard", uid: 763799, }, { type: "way", id: 61435323, timestamp: "2021-08-21T12:24:13Z", version: 7, changeset: 110026637, user: "Thibault Rommel", uid: 5846458, nodes: [766990983, 8669018379, 766990985], tags: { bicycle: "yes", bridge: "yes", cycleway: "shared_lane", highway: "unclassified", layer: "1", maxspeed: "50", name: "Houtkaai", surface: "asphalt", "zone:traffic": "BE-VLG:urban", }, }, ], } ) Utils.injectJsonDownloadForTests( "https://www.openstreetmap.org/api/0.6/way/61435323/relations", { version: "0.6", generator: "CGImap 0.8.5 (3622541 spike-06.openstreetmap.org)", copyright: "OpenStreetMap and contributors", attribution: "http://www.openstreetmap.org/copyright", license: "http://opendatacommons.org/licenses/odbl/1-0/", elements: [ { type: "relation", id: 1723870, timestamp: "2021-09-18T06:29:31Z", version: 183, changeset: 111362343, user: "emvee", uid: 5211, members: [ { type: "way", ref: 261428947, role: "" }, { type: "way", ref: 162774622, role: "", }, { type: "way", ref: 317060244, role: "" }, { type: "way", ref: 81155378, role: "", }, { type: "way", ref: 99749583, role: "" }, { type: "way", ref: 131332113, role: "", }, { type: "way", ref: 949518831, role: "" }, { type: "way", ref: 99749584, role: "", }, { type: "way", ref: 129133519, role: "" }, { type: "way", ref: 73241312, role: "", }, { type: "way", ref: 785514256, role: "" }, { type: "way", ref: 58509643, role: "", }, { type: "way", ref: 73241332, role: "" }, { type: "way", ref: 58509653, role: "", }, { type: "way", ref: 100044097, role: "" }, { type: "way", ref: 946999067, role: "", }, { type: "way", ref: 73241327, role: "" }, { type: "way", ref: 58509617, role: "", }, { type: "way", ref: 58509627, role: "" }, { type: "way", ref: 69990655, role: "", }, { type: "way", ref: 73241311, role: "" }, { type: "way", ref: 123142336, role: "", }, { type: "way", ref: 249671053, role: "" }, { type: "way", ref: 73241324, role: "", }, { type: "way", ref: 66706953, role: "" }, { type: "way", ref: 112679357, role: "", }, { type: "way", ref: 112679358, role: "" }, { type: "way", ref: 53105113, role: "", }, { type: "way", ref: 66706952, role: "" }, { type: "way", ref: 64083661, role: "", }, { type: "way", ref: 53105162, role: "" }, { type: "way", ref: 249671070, role: "", }, { type: "way", ref: 249671064, role: "" }, { type: "way", ref: 101498587, role: "", }, { type: "way", ref: 69001236, role: "" }, { type: "way", ref: 101498585, role: "", }, { type: "way", ref: 70909444, role: "" }, { type: "way", ref: 73241314, role: "", }, { type: "way", ref: 69001235, role: "" }, { type: "way", ref: 113150200, role: "", }, { type: "way", ref: 137305843, role: "" }, { type: "way", ref: 936827687, role: "", }, { type: "way", ref: 936827688, role: "" }, { type: "way", ref: 112952373, role: "", }, { type: "way", ref: 930798379, role: "" }, { type: "way", ref: 930798378, role: "", }, { type: "way", ref: 112951439, role: "" }, { type: "way", ref: 445541591, role: "", }, { type: "way", ref: 103843896, role: "" }, { type: "way", ref: 23734118, role: "", }, { type: "way", ref: 103840557, role: "" }, { type: "way", ref: 433852210, role: "", }, { type: "way", ref: 313604670, role: "" }, { type: "way", ref: 103839402, role: "", }, { type: "way", ref: 23736061, role: "" }, { type: "way", ref: 73241328, role: "", }, { type: "way", ref: 295392689, role: "" }, { type: "way", ref: 297168171, role: "", }, { type: "way", ref: 297168170, role: "" }, { type: "way", ref: 433852205, role: "", }, { type: "way", ref: 295392695, role: "" }, { type: "way", ref: 663268954, role: "", }, { type: "way", ref: 663267598, role: "" }, { type: "way", ref: 292478843, role: "", }, { type: "way", ref: 981853853, role: "" }, { type: "way", ref: 663270140, role: "", }, { type: "way", ref: 981853854, role: "" }, { type: "way", ref: 295392703, role: "", }, { type: "way", ref: 663304916, role: "" }, { type: "way", ref: 297169116, role: "", }, { type: "way", ref: 295400810, role: "" }, { type: "way", ref: 981853855, role: "", }, { type: "way", ref: 663304806, role: "" }, { type: "way", ref: 516452870, role: "", }, { type: "way", ref: 66459239, role: "" }, { type: "way", ref: 791430504, role: "", }, { type: "way", ref: 178926037, role: "" }, { type: "way", ref: 864799431, role: "", }, { type: "way", ref: 178926107, role: "" }, { type: "way", ref: 663320459, role: "", }, { type: "way", ref: 62033993, role: "" }, { type: "way", ref: 62283023, role: "", }, { type: "way", ref: 62283057, role: "" }, { type: "way", ref: 62283032, role: "", }, { type: "way", ref: 490551085, role: "" }, { type: "way", ref: 435318979, role: "", }, { type: "way", ref: 371750677, role: "" }, { type: "way", ref: 371750670, role: "", }, { type: "way", ref: 371750673, role: "" }, { type: "way", ref: 371750675, role: "", }, { type: "way", ref: 459885691, role: "" }, { type: "way", ref: 371750669, role: "", }, { type: "way", ref: 371750668, role: "" }, { type: "way", ref: 371750667, role: "", }, { type: "way", ref: 428848639, role: "" }, { type: "way", ref: 371750666, role: "", }, { type: "way", ref: 371750665, role: "" }, { type: "way", ref: 825496473, role: "", }, { type: "way", ref: 371750664, role: "" }, { type: "way", ref: 371750662, role: "", }, { type: "way", ref: 371750663, role: "" }, { type: "way", ref: 371750660, role: "", }, { type: "way", ref: 371750658, role: "" }, { type: "way", ref: 40507374, role: "", }, { type: "way", ref: 165878356, role: "" }, { type: "way", ref: 165878355, role: "", }, { type: "way", ref: 8494219, role: "" }, { type: "way", ref: 5023947, role: "", }, { type: "way", ref: 5023939, role: "" }, { type: "way", ref: 26718843, role: "", }, { type: "way", ref: 79437029, role: "" }, { type: "way", ref: 87522151, role: "", }, { type: "way", ref: 26718848, role: "" }, { type: "way", ref: 233169831, role: "", }, { type: "way", ref: 85934460, role: "" }, { type: "way", ref: 145892210, role: "", }, { type: "way", ref: 79434764, role: "" }, { type: "way", ref: 127079185, role: "", }, { type: "way", ref: 67794715, role: "" }, { type: "way", ref: 85934250, role: "", }, { type: "way", ref: 421566302, role: "" }, { type: "way", ref: 123445537, role: "", }, { type: "way", ref: 308077683, role: "" }, { type: "way", ref: 308077684, role: "", }, { type: "way", ref: 972955357, role: "" }, { type: "way", ref: 308077682, role: "", }, { type: "way", ref: 659880052, role: "" }, { type: "way", ref: 308077681, role: "", }, { type: "way", ref: 66364130, role: "" }, { type: "way", ref: 51086959, role: "", }, { type: "way", ref: 51086961, role: "" }, { type: "way", ref: 102154586, role: "", }, { type: "way", ref: 102154589, role: "" }, { type: "way", ref: 703008376, role: "", }, { type: "way", ref: 703008375, role: "" }, { type: "way", ref: 54435150, role: "", }, { type: "way", ref: 115913100, role: "" }, { type: "way", ref: 79433785, role: "", }, { type: "way", ref: 51204355, role: "" }, { type: "way", ref: 422395066, role: "", }, { type: "way", ref: 116628138, role: "" }, { type: "way", ref: 690189323, role: "", }, { type: "way", ref: 132068368, role: "" }, { type: "way", ref: 690220771, role: "", }, { type: "way", ref: 690220772, role: "" }, { type: "way", ref: 690226744, role: "", }, { type: "way", ref: 690226745, role: "" }, { type: "way", ref: 60253953, role: "", }, { type: "way", ref: 690195774, role: "" }, { type: "way", ref: 688104939, role: "", }, { type: "way", ref: 422395064, role: "forward" }, { type: "way", ref: 422309497, role: "forward", }, { type: "way", ref: 25677204, role: "forward" }, { type: "way", ref: 51570941, role: "", }, { type: "way", ref: 807329786, role: "" }, { type: "way", ref: 165500495, role: "", }, { type: "way", ref: 689494106, role: "" }, { type: "way", ref: 131476435, role: "", }, { type: "way", ref: 689493508, role: "" }, { type: "way", ref: 12126873, role: "", }, { type: "way", ref: 32789519, role: "" }, { type: "way", ref: 27288122, role: "", }, { type: "way", ref: 116717060, role: "" }, { type: "way", ref: 176380249, role: "", }, { type: "way", ref: 116717052, role: "" }, { type: "way", ref: 176380250, role: "", }, { type: "way", ref: 421998791, role: "" }, { type: "way", ref: 34562745, role: "", }, { type: "way", ref: 130473931, role: "" }, { type: "way", ref: 136487196, role: "", }, { type: "way", ref: 23792223, role: "" }, { type: "way", ref: 23775021, role: "", }, { type: "way", ref: 560506339, role: "" }, { type: "way", ref: 337945886, role: "", }, { type: "way", ref: 61435332, role: "" }, { type: "way", ref: 61435323, role: "", }, { type: "way", ref: 509668834, role: "" }, { type: "way", ref: 130473917, role: "", }, { type: "way", ref: 369929894, role: "" }, { type: "way", ref: 805247467, role: "forward", }, { type: "way", ref: 840210016, role: "forward" }, { type: "way", ref: 539026983, role: "forward", }, { type: "way", ref: 539037793, role: "forward" }, { type: "way", ref: 244428576, role: "forward", }, { type: "way", ref: 243333119, role: "forward" }, { type: "way", ref: 243333108, role: "forward", }, { type: "way", ref: 243333106, role: "forward" }, { type: "way", ref: 243333110, role: "forward", }, { type: "way", ref: 230511503, role: "forward" }, { type: "way", ref: 510520445, role: "forward", }, { type: "way", ref: 688103605, role: "forward" }, { type: "way", ref: 668577053, role: "forward", }, { type: "way", ref: 4332489, role: "forward" }, { type: "way", ref: 668577051, role: "forward", }, { type: "way", ref: 185476761, role: "forward" }, { type: "way", ref: 100774483, role: "forward", }, { type: "way", ref: 668672434, role: "backward" }, { type: "way", ref: 488558133, role: "backward", }, { type: "way", ref: 13943237, role: "forward" }, { type: "way", ref: 840241791, role: "forward", }, { type: "way", ref: 805247468, role: "forward" }, { type: "way", ref: 539040946, role: "forward", }, { type: "way", ref: 539026103, role: "forward" }, { type: "way", ref: 539037781, role: "forward", }, { type: "way", ref: 28942112, role: "forward" }, { type: "way", ref: 699841535, role: "forward", }, { type: "way", ref: 635374201, role: "forward" }, { type: "way", ref: 28942118, role: "forward", }, { type: "way", ref: 185476755, role: "forward" }, { type: "way", ref: 78794903, role: "forward", }, { type: "way", ref: 688103599, role: "forward" }, { type: "way", ref: 688103600, role: "backward", }, { type: "way", ref: 32699077, role: "backward" }, { type: "way", ref: 249092420, role: "backward", }, { type: "way", ref: 540048295, role: "" }, { type: "way", ref: 13942938, role: "", }, { type: "way", ref: 827705395, role: "" }, { type: "way", ref: 72492953, role: "", }, { type: "way", ref: 61435342, role: "" }, { type: "way", ref: 95106180, role: "", }, { type: "way", ref: 182691326, role: "" }, { type: "way", ref: 180915274, role: "", }, { type: "way", ref: 61435340, role: "" }, { type: "way", ref: 95506626, role: "", }, { type: "way", ref: 183330864, role: "" }, { type: "way", ref: 318631002, role: "", }, { type: "way", ref: 4332470, role: "" }, { type: "way", ref: 318631014, role: "", }, { type: "way", ref: 337969633, role: "" }, { type: "way", ref: 668566903, role: "", }, { type: "way", ref: 668566904, role: "" }, { type: "way", ref: 248228679, role: "", }, { type: "way", ref: 419296358, role: "" }, { type: "way", ref: 601005356, role: "", }, { type: "way", ref: 497802656, role: "" }, { type: "way", ref: 948484806, role: "", }, { type: "way", ref: 756223825, role: "" }, { type: "way", ref: 23206884, role: "", }, { type: "way", ref: 157436856, role: "" }, { type: "way", ref: 829398288, role: "", }, { type: "way", ref: 829398289, role: "" }, { type: "way", ref: 674490354, role: "", }, { type: "way", ref: 131704173, role: "" }, { type: "way", ref: 120976014, role: "", }, { type: "way", ref: 38864144, role: "" }, { type: "way", ref: 38864143, role: "", }, { type: "way", ref: 32147475, role: "" }, { type: "way", ref: 962256846, role: "", }, { type: "way", ref: 32147479, role: "" }, { type: "way", ref: 32147481, role: "", }, { type: "way", ref: 49486734, role: "" }, { type: "way", ref: 829394351, role: "", }, { type: "way", ref: 829394349, role: "" }, { type: "way", ref: 235193261, role: "", }, { type: "way", ref: 130495866, role: "" }, { type: "way", ref: 978366962, role: "", }, { type: "way", ref: 39588752, role: "" }, { type: "way", ref: 436528651, role: "", }, { type: "way", ref: 27370335, role: "" }, { type: "way", ref: 157558803, role: "", }, { type: "way", ref: 39590466, role: "" }, { type: "way", ref: 157558804, role: "", }, { type: "way", ref: 27370165, role: "" }, { type: "way", ref: 970841665, role: "" }, ], tags: { name: "Euroroute R1 - part Belgium", "name:de": "Europaradweg R1 - Abschnitt Belgien", "name:nl": "Euroroute R1 - deel Belgiƫ", network: "icn", ref: "R1", route: "bicycle", type: "route", }, }, { type: "relation", id: 1757007, timestamp: "2020-10-13T01:31:44Z", version: 10, changeset: 92380204, user: "Diabolix", uid: 2123963, members: [ { type: "way", ref: 509668834, role: "" }, { type: "way", ref: 61435323, role: "", }, { type: "way", ref: 61435332, role: "" }, { type: "way", ref: 337945886, role: "", }, { type: "way", ref: 560506339, role: "" }, { type: "way", ref: 23775021, role: "", }, { type: "way", ref: 23792223, role: "" }, ], tags: { network: "rcn", "network:type": "node_network", ref: "4-36", route: "bicycle", type: "route", }, }, { type: "relation", id: 5150189, timestamp: "2021-09-09T20:15:58Z", version: 44, changeset: 110993632, user: "JosV", uid: 170722, members: [ { type: "way", ref: 13943237, role: "" }, { type: "way", ref: 488558133, role: "", }, { type: "way", ref: 369929894, role: "" }, { type: "way", ref: 130473917, role: "", }, { type: "way", ref: 509668834, role: "" }, { type: "way", ref: 61435323, role: "", }, { type: "way", ref: 61435332, role: "" }, { type: "way", ref: 337945886, role: "", }, { type: "way", ref: 560506339, role: "" }, { type: "way", ref: 23775021, role: "", }, { type: "way", ref: 23792223, role: "" }, { type: "way", ref: 136487196, role: "", }, { type: "way", ref: 130473931, role: "" }, { type: "way", ref: 34562745, role: "", }, { type: "way", ref: 421998791, role: "" }, { type: "way", ref: 126996864, role: "", }, { type: "way", ref: 126996861, role: "" }, { type: "way", ref: 170989337, role: "", }, { type: "way", ref: 72482534, role: "" }, { type: "way", ref: 58913500, role: "", }, { type: "way", ref: 72482539, role: "" }, { type: "way", ref: 246969243, role: "", }, { type: "way", ref: 153150902, role: "" }, { type: "way", ref: 116748588, role: "", }, { type: "way", ref: 72482544, role: "" }, { type: "way", ref: 72482542, role: "", }, { type: "way", ref: 337013552, role: "" }, { type: "way", ref: 132790401, role: "", }, { type: "way", ref: 105166767, role: "" }, { type: "way", ref: 720356345, role: "", }, { type: "way", ref: 197829999, role: "" }, { type: "way", ref: 105166552, role: "", }, { type: "way", ref: 61979075, role: "" }, { type: "way", ref: 197830184, role: "", }, { type: "way", ref: 61979070, role: "" }, { type: "way", ref: 948826013, role: "", }, { type: "way", ref: 197830182, role: "" }, { type: "way", ref: 672535497, role: "", }, { type: "way", ref: 672535498, role: "" }, { type: "way", ref: 948826015, role: "", }, { type: "way", ref: 11378674, role: "" }, { type: "way", ref: 672535496, role: "", }, { type: "way", ref: 70023921, role: "" }, { type: "way", ref: 948826017, role: "", }, { type: "way", ref: 197830260, role: "" }, { type: "way", ref: 152210843, role: "", }, { type: "way", ref: 33748055, role: "" }, { type: "way", ref: 344701437, role: "", }, { type: "way", ref: 422150672, role: "" }, { type: "way", ref: 156228338, role: "", }, { type: "way", ref: 422150674, role: "" }, { type: "way", ref: 223674432, role: "", }, { type: "way", ref: 223674437, role: "" }, { type: "way", ref: 156228327, role: "", }, { type: "way", ref: 223674372, role: "" }, { type: "way", ref: 592937889, role: "", }, { type: "way", ref: 592937890, role: "" }, { type: "way", ref: 422099666, role: "", }, { type: "way", ref: 422100304, role: "" }, { type: "way", ref: 948826022, role: "", }, { type: "way", ref: 15092930, role: "" }, { type: "way", ref: 948826024, role: "", }, { type: "way", ref: 105182226, role: "" }, { type: "way", ref: 133606215, role: "", }, { type: "way", ref: 533395656, role: "" }, { type: "way", ref: 187115987, role: "", }, { type: "way", ref: 105182230, role: "" }, { type: "way", ref: 105182232, role: "", }, { type: "way", ref: 196011634, role: "" }, { type: "way", ref: 153273480, role: "", }, { type: "way", ref: 153273481, role: "" }, { type: "way", ref: 881767783, role: "", }, { type: "way", ref: 153273479, role: "" }, { type: "way", ref: 13462242, role: "", }, { type: "way", ref: 498093425, role: "" }, { type: "way", ref: 70009137, role: "", }, { type: "way", ref: 12086805, role: "" }, { type: "way", ref: 52523332, role: "", }, { type: "way", ref: 70009138, role: "" }, { type: "way", ref: 592937884, role: "", }, { type: "way", ref: 15071942, role: "" }, { type: "way", ref: 180798233, role: "", }, { type: "way", ref: 70010670, role: "" }, { type: "way", ref: 15802818, role: "", }, { type: "way", ref: 15802809, role: "" }, { type: "way", ref: 70011254, role: "", }, { type: "way", ref: 671368756, role: "" }, { type: "way", ref: 840241791, role: "", }, { type: "way", ref: 369929367, role: "" }, { type: "way", ref: 539038988, role: "", }, { type: "way", ref: 80130513, role: "" }, { type: "way", ref: 540214122, role: "", }, { type: "way", ref: 765795083, role: "" }, { type: "way", ref: 13943005, role: "", }, { type: "way", ref: 72492950, role: "" }, { type: "way", ref: 183330864, role: "", }, { type: "way", ref: 318631002, role: "" }, { type: "way", ref: 4332470, role: "", }, { type: "way", ref: 318631014, role: "" }, { type: "way", ref: 337969633, role: "", }, { type: "way", ref: 668566903, role: "" }, { type: "way", ref: 668566904, role: "", }, { type: "way", ref: 248228679, role: "" }, { type: "way", ref: 419296358, role: "", }, { type: "way", ref: 601005356, role: "" }, { type: "way", ref: 497802656, role: "", }, { type: "way", ref: 948484806, role: "" }, { type: "way", ref: 100323579, role: "", }, { type: "way", ref: 100708215, role: "" }, { type: "way", ref: 124559834, role: "", }, { type: "way", ref: 124559835, role: "" }, { type: "way", ref: 239484694, role: "", }, { type: "way", ref: 972646812, role: "" }, { type: "way", ref: 124559832, role: "", }, { type: "way", ref: 361686157, role: "" }, { type: "way", ref: 361686155, role: "", }, { type: "way", ref: 239484693, role: "" }, { type: "way", ref: 19861731, role: "", }, { type: "way", ref: 967906429, role: "" }, { type: "way", ref: 126402539, role: "", }, { type: "way", ref: 94427058, role: "" }, { type: "way", ref: 126402541, role: "", }, { type: "way", ref: 313693839, role: "" }, { type: "way", ref: 313693838, role: "", }, { type: "way", ref: 970740536, role: "" }, { type: "way", ref: 361719175, role: "", }, { type: "way", ref: 663186012, role: "" }, { type: "way", ref: 744625794, role: "", }, { type: "way", ref: 94569877, role: "" }, { type: "way", ref: 188973964, role: "", }, { type: "way", ref: 948484822, role: "" }, { type: "way", ref: 28857260, role: "", }, { type: "way", ref: 948484821, role: "" }, { type: "way", ref: 219185860, role: "", }, { type: "way", ref: 948484818, role: "" }, { type: "way", ref: 219185861, role: "", }, { type: "way", ref: 229885580, role: "" }, { type: "way", ref: 28857247, role: "", }, { type: "way", ref: 128813937, role: "" }, { type: "way", ref: 32148201, role: "", }, { type: "way", ref: 829398290, role: "" }, { type: "way", ref: 829398288, role: "", }, { type: "way", ref: 157436856, role: "" }, { type: "way", ref: 23206887, role: "", }, { type: "way", ref: 657081380, role: "" }, { type: "way", ref: 948484817, role: "", }, { type: "way", ref: 657081379, role: "" }, { type: "way", ref: 657083379, role: "", }, { type: "way", ref: 657083378, role: "" }, { type: "way", ref: 72492956, role: "", }, { type: "way", ref: 183763716, role: "" }, { type: "way", ref: 497802654, role: "", }, { type: "way", ref: 497802655, role: "" }, { type: "way", ref: 348402994, role: "", }, { type: "way", ref: 497802653, role: "" }, { type: "way", ref: 948484813, role: "", }, { type: "way", ref: 272353449, role: "forward" }, { type: "way", ref: 497802652, role: "forward", }, { type: "way", ref: 948484811, role: "" }, { type: "way", ref: 948484810, role: "", }, { type: "way", ref: 136564089, role: "" }, { type: "way", ref: 970740538, role: "", }, { type: "way", ref: 970740539, role: "" }, { type: "way", ref: 433455263, role: "", }, { type: "way", ref: 23206893, role: "" }, { type: "way", ref: 95506626, role: "", }, { type: "way", ref: 61435340, role: "" }, { type: "way", ref: 180915274, role: "", }, { type: "way", ref: 182691326, role: "" }, { type: "way", ref: 95106180, role: "", }, { type: "way", ref: 61435342, role: "" }, { type: "way", ref: 72492953, role: "", }, { type: "way", ref: 827705395, role: "" }, { type: "way", ref: 13942938, role: "", }, { type: "way", ref: 540048295, role: "" }, { type: "way", ref: 249092420, role: "", }, { type: "way", ref: 32699077, role: "" }, { type: "way", ref: 688103600, role: "", }, { type: "way", ref: 654338684, role: "forward" }, { type: "way", ref: 11018710, role: "forward", }, { type: "way", ref: 510825612, role: "forward" }, { type: "way", ref: 70011248, role: "forward", }, { type: "way", ref: 654338685, role: "forward" }, { type: "way", ref: 14626290, role: "", }, { type: "way", ref: 70011250, role: "" }, { type: "way", ref: 12295471, role: "", }, { type: "way", ref: 397097504, role: "" }, { type: "way", ref: 12295484, role: "", }, { type: "way", ref: 41990436, role: "" }, { type: "way", ref: 70011252, role: "", }, { type: "way", ref: 61503690, role: "" }, { type: "way", ref: 182978284, role: "", }, { type: "way", ref: 790820260, role: "forward" }, { type: "way", ref: 592937894, role: "forward", }, { type: "way", ref: 926028042, role: "forward" }, { type: "way", ref: 592937902, role: "forward", }, { type: "way", ref: 592937901, role: "forward" }, { type: "way", ref: 182978255, role: "forward", }, { type: "way", ref: 592937903, role: "forward" }, { type: "way", ref: 12123659, role: "forward", }, { type: "way", ref: 666877213, role: "forward" }, { type: "way", ref: 790820259, role: "forward", }, { type: "way", ref: 510825618, role: "" }, { type: "way", ref: 13496412, role: "", }, { type: "way", ref: 654338689, role: "" }, { type: "way", ref: 740935312, role: "", }, { type: "way", ref: 52288671, role: "" }, { type: "way", ref: 52288667, role: "", }, { type: "way", ref: 12123458, role: "" }, { type: "way", ref: 508681905, role: "", }, { type: "way", ref: 15071314, role: "" }, { type: "way", ref: 61503700, role: "", }, { type: "way", ref: 41989874, role: "" }, { type: "way", ref: 328002077, role: "", }, { type: "way", ref: 396377151, role: "" }, { type: "way", ref: 396377150, role: "", }, { type: "way", ref: 396377125, role: "" }, { type: "way", ref: 328985990, role: "", }, { type: "way", ref: 328985992, role: "" }, { type: "way", ref: 328985993, role: "", }, { type: "way", ref: 328985991, role: "" }, { type: "way", ref: 632506298, role: "", }, { type: "way", ref: 101191104, role: "" }, { type: "way", ref: 499129522, role: "", }, { type: "way", ref: 15071174, role: "" }, { type: "way", ref: 297023609, role: "", }, { type: "way", ref: 297023610, role: "" }, { type: "way", ref: 297023608, role: "", }, { type: "way", ref: 112695115, role: "" }, { type: "way", ref: 584024902, role: "", }, { type: "way", ref: 243543197, role: "" }, { type: "way", ref: 101191119, role: "forward", }, { type: "way", ref: 173530022, role: "forward" }, { type: "way", ref: 265137637, role: "forward", }, { type: "way", ref: 160627684, role: "forward" }, { type: "way", ref: 657163351, role: "forward", }, { type: "way", ref: 160627682, role: "forward" }, { type: "way", ref: 160632906, role: "forward", }, { type: "way", ref: 176870850, role: "forward" }, { type: "way", ref: 173662701, role: "forward", }, { type: "way", ref: 173662702, role: "" }, { type: "way", ref: 467606230, role: "", }, { type: "way", ref: 126267167, role: "" }, { type: "way", ref: 301897426, role: "", }, { type: "way", ref: 687866206, role: "" }, { type: "way", ref: 295132739, role: "", }, { type: "way", ref: 690497698, role: "" }, { type: "way", ref: 627893684, role: "", }, { type: "way", ref: 295132741, role: "" }, { type: "way", ref: 301903120, role: "", }, { type: "way", ref: 672541156, role: "" }, { type: "way", ref: 126264330, role: "", }, { type: "way", ref: 280440853, role: "" }, { type: "way", ref: 838499667, role: "", }, { type: "way", ref: 838499663, role: "" }, { type: "way", ref: 690497623, role: "", }, { type: "way", ref: 301902946, role: "" }, { type: "way", ref: 280460715, role: "", }, { type: "way", ref: 972534369, role: "" }, { type: "way", ref: 588764361, role: "", }, { type: "way", ref: 981365419, role: "" }, { type: "way", ref: 188979882, role: "", }, { type: "way", ref: 578030518, role: "" }, { type: "way", ref: 124559857, role: "", }, { type: "way", ref: 284568605, role: "" }, { type: "way", ref: 126405025, role: "", }, { type: "way", ref: 188978777, role: "" }, { type: "way", ref: 272353445, role: "forward", }, { type: "way", ref: 221443952, role: "forward" }, { type: "way", ref: 172708119, role: "forward", }, { type: "way", ref: 173061662, role: "forward" }, { type: "way", ref: 441663456, role: "forward", }, { type: "way", ref: 160627680, role: "forward" }, { type: "way", ref: 176870852, role: "forward", }, { type: "way", ref: 39588762, role: "forward" }, { type: "way", ref: 172709466, role: "forward", }, { type: "way", ref: 598459103, role: "forward" }, { type: "way", ref: 688054392, role: "forward", }, { type: "way", ref: 155986859, role: "forward" }, ], tags: { name: "Groene Gordel Brugge", network: "lcn", ref: "GGB", route: "bicycle", type: "route", }, }, { type: "relation", id: 8369765, timestamp: "2021-08-23T14:22:45Z", version: 19, changeset: 110120188, user: "Pieter Vander Vennet", uid: 3818858, members: [ { type: "way", ref: 539038988, role: "" }, { type: "way", ref: 369929367, role: "", }, { type: "way", ref: 840241791, role: "" }, { type: "way", ref: 488558133, role: "", }, { type: "way", ref: 369929894, role: "" }, { type: "way", ref: 130473917, role: "", }, { type: "way", ref: 509668834, role: "" }, { type: "way", ref: 61435323, role: "", }, { type: "way", ref: 61435332, role: "" }, { type: "way", ref: 337945886, role: "", }, { type: "way", ref: 560506339, role: "" }, { type: "way", ref: 23775021, role: "", }, { type: "way", ref: 23792223, role: "" }, { type: "way", ref: 136487196, role: "", }, { type: "way", ref: 130473931, role: "" }, { type: "way", ref: 34562745, role: "", }, { type: "way", ref: 421998791, role: "" }, { type: "way", ref: 176380250, role: "", }, { type: "way", ref: 116717052, role: "" }, { type: "way", ref: 176380249, role: "", }, { type: "way", ref: 116717060, role: "" }, { type: "way", ref: 27288122, role: "", }, { type: "way", ref: 32789519, role: "" }, { type: "way", ref: 12126873, role: "", }, { type: "way", ref: 689493508, role: "" }, { type: "way", ref: 131476435, role: "", }, { type: "way", ref: 689494106, role: "" }, { type: "way", ref: 165500495, role: "", }, { type: "way", ref: 807329786, role: "" }, { type: "way", ref: 51570941, role: "", }, { type: "way", ref: 422309497, role: "" }, { type: "way", ref: 240869981, role: "", }, { type: "way", ref: 240869873, role: "" }, { type: "way", ref: 240869980, role: "", }, { type: "way", ref: 165503767, role: "" }, { type: "way", ref: 165503764, role: "", }, { type: "way", ref: 421566315, role: "" }, { type: "way", ref: 165503768, role: "", }, { type: "way", ref: 245236630, role: "" }, { type: "way", ref: 658500046, role: "forward", }, { type: "way", ref: 646903393, role: "forward" }, { type: "way", ref: 245236632, role: "forward", }, { type: "way", ref: 245236633, role: "forward" }, { type: "way", ref: 90485426, role: "", }, { type: "way", ref: 596073878, role: "" }, { type: "way", ref: 10898401, role: "backward", }, { type: "way", ref: 658500044, role: "forward" }, { type: "way", ref: 474253371, role: "forward", }, { type: "way", ref: 474253369, role: "forward" }, { type: "way", ref: 474253376, role: "forward", }, { type: "way", ref: 165845350, role: "backward" }, { type: "way", ref: 130697218, role: "", }, { type: "way", ref: 61565721, role: "" }, { type: "way", ref: 497202210, role: "", }, { type: "way", ref: 130697226, role: "" }, { type: "way", ref: 227617858, role: "", }, { type: "way", ref: 227617857, role: "" }, { type: "way", ref: 681804956, role: "", }, { type: "way", ref: 165881675, role: "" }, { type: "way", ref: 806146504, role: "", }, { type: "way", ref: 806146505, role: "" }, { type: "way", ref: 659762284, role: "" }, ], tags: { alt_name: "Fietssnelweg F30 Brugge - Oostende", "bicycle:type": "utility", cycle_highway: "yes", cycle_network: "BE-VLG:cycle_highway", name: "F30 Fietssnelweg Brugge - Oostende", network: "ncn", operator: "Provincie West-Vlaanderen", ref: "F30", route: "bicycle", state: "proposed", type: "route", website: "https://fietssnelwegen.be/f30", wikidata: "Q107485732", }, }, { type: "relation", id: 13060733, timestamp: "2021-09-19T18:08:57Z", version: 5, changeset: 111419581, user: "L'imaginaire", uid: 654234, members: [ { type: "way", ref: 23792223, role: "" }, { type: "way", ref: 23775021, role: "", }, { type: "way", ref: 560506339, role: "" }, { type: "way", ref: 337945886, role: "", }, { type: "way", ref: 61435332, role: "" }, { type: "way", ref: 61435323, role: "", }, { type: "way", ref: 509668834, role: "" }, { type: "way", ref: 839596136, role: "", }, { type: "way", ref: 840488274, role: "" }, { type: "way", ref: 839596137, role: "", }, { type: "way", ref: 146172188, role: "" }, { type: "way", ref: 749212030, role: "", }, { type: "way", ref: 799479035, role: "" }, { type: "way", ref: 130473928, role: "", }, { type: "way", ref: 61414103, role: "" }, { type: "way", ref: 539672618, role: "", }, { type: "way", ref: 799479034, role: "" }, { type: "way", ref: 539672617, role: "", }, { type: "way", ref: 539672616, role: "" }, { type: "way", ref: 539671786, role: "", }, { type: "way", ref: 172317285, role: "" }, { type: "way", ref: 35328157, role: "", }, { type: "way", ref: 249119335, role: "" }, { type: "way", ref: 584214875, role: "", }, { type: "way", ref: 584217798, role: "" }, { type: "way", ref: 676801473, role: "", }, { type: "way", ref: 456588356, role: "" }, { type: "way", ref: 456589109, role: "", }, { type: "way", ref: 456588496, role: "" }, { type: "way", ref: 487199906, role: "", }, { type: "way", ref: 299450868, role: "" }, { type: "way", ref: 165548222, role: "", }, { type: "way", ref: 4329135, role: "" }, { type: "way", ref: 4329771, role: "", }, { type: "way", ref: 155149803, role: "" }, { type: "way", ref: 305625031, role: "", }, { type: "way", ref: 100842624, role: "" }, { type: "way", ref: 18102445, role: "", }, { type: "way", ref: 541116658, role: "" }, { type: "way", ref: 591094005, role: "", }, { type: "way", ref: 591094004, role: "" }, { type: "way", ref: 184684947, role: "", }, { type: "way", ref: 34945088, role: "" }, { type: "way", ref: 235195315, role: "", }, { type: "way", ref: 497849660, role: "" }, ], tags: { colour: "#e40613", cycle_network: "BE-VLG:icoonroutes", description: "segment 2 van de Kunststedenroute", fixme: "incomplete", from: "Oostende", name: "Kunststedenroute - 02 - Oostende - Brugge", network: "ncn", operator: "Toerisme Vlaanderen", ref: "Kunst", route: "bicycle", to: "Brugge", type: "route", website: "https://www.vlaanderenmetdefiets.be/routes/kunststeden.html", wikidata: "Q106529274", wikipedia: "nl:LF Kunststedenroute", }, }, ], } ) Utils.injectJsonDownloadForTests( "https://www.openstreetmap.org/api/0.6/way/61435332/full", { version: "0.6", generator: "CGImap 0.8.5 (3819319 spike-06.openstreetmap.org)", copyright: "OpenStreetMap and contributors", attribution: "http://www.openstreetmap.org/copyright", license: "http://opendatacommons.org/licenses/odbl/1-0/", elements: [ { type: "node", id: 766990985, lat: 51.2169574, lon: 3.2017548, timestamp: "2016-07-05T22:41:12Z", version: 6, changeset: 40511250, user: "M!dgard", uid: 763799, }, { type: "node", id: 3450208876, lat: 51.2169482, lon: 3.2016802, timestamp: "2016-07-05T22:41:11Z", version: 2, changeset: 40511250, user: "M!dgard", uid: 763799, }, { type: "way", id: 61435332, timestamp: "2021-08-21T12:24:13Z", version: 8, changeset: 110026637, user: "Thibault Rommel", uid: 5846458, nodes: [766990985, 3450208876], tags: { bicycle: "yes", cycleway: "shared_lane", highway: "unclassified", maxspeed: "50", name: "Houtkaai", surface: "asphalt", "zone:traffic": "BE-VLG:urban", }, }, ], } ) Utils.injectJsonDownloadForTests( "https://www.openstreetmap.org/api/0.6/way/509668834/full", { version: "0.6", generator: "CGImap 0.8.5 (3735280 spike-06.openstreetmap.org)", copyright: "OpenStreetMap and contributors", attribution: "http://www.openstreetmap.org/copyright", license: "http://opendatacommons.org/licenses/odbl/1-0/", elements: [ { type: "node", id: 131917824, lat: 51.2170327, lon: 3.2023577, timestamp: "2019-09-16T09:48:28Z", version: 17, changeset: 74521581, user: "Peter Elderson", uid: 7103674, tags: { "network:type": "node_network", rcn_ref: "4", rcn_region: "Brugse Ommeland", }, }, { type: "node", id: 766990983, lat: 51.2170219, lon: 3.2022337, timestamp: "2021-04-26T15:48:22Z", version: 6, changeset: 103647857, user: "M!dgard", uid: 763799, }, { type: "way", id: 509668834, timestamp: "2021-08-21T12:24:13Z", version: 5, changeset: 110026637, user: "Thibault Rommel", uid: 5846458, nodes: [131917824, 766990983], tags: { bicycle: "yes", cycleway: "shared_lane", highway: "residential", lit: "yes", maxspeed: "30", name: "Houtkaai", sidewalk: "both", surface: "paving_stones", "zone:maxspeed": "BE:30", "zone:traffic": "BE-VLG:urban", }, }, ], } ) } it("split 295132739", async () => { // Lets split road https://www.openstreetmap.org/way/295132739 const id = "way/295132739" const splitPoint: [number, number] = [3.246733546257019, 51.181710380278176] const splitter = new SplitAction(id, [splitPoint], { theme: "test", }) const changeDescription = await splitter.CreateChangeDescriptions( new Changes({ dryRun: new ImmutableStore(true), osmConnection: new OsmConnection(), }) ) expect(changeDescription[0].type).toBe("node") expect(changeDescription[0].id).toBe(-1) expect(changeDescription[0].changes["lat"]).toBe(51.181710380278176) expect(changeDescription[0].changes["lon"]).toBe(3.246733546257019) expect(changeDescription[1].type).toBe("way") expect(changeDescription[1].id).toBe(-2) expect(changeDescription[1].changes["coordinates"].length).toBe(6) expect(changeDescription[1].changes["coordinates"][5][0]).toBe(splitPoint[0]) expect(changeDescription[1].changes["coordinates"][5][1]).toBe(splitPoint[1]) expect(changeDescription[2].type).toBe("way") expect(changeDescription[2].id).toBe(295132739) expect(changeDescription[2].changes["coordinates"].length).toBe(10) expect(changeDescription[2].changes["coordinates"][0][0]).toBe(splitPoint[0]) expect(changeDescription[2].changes["coordinates"][0][1]).toBe(splitPoint[1]) }) it("split 295132739 on already existing node", async () => { // Lets split road near an already existing point https://www.openstreetmap.org/way/295132739 const id = "way/295132739" const splitPoint: [number, number] = [3.2451081275939937, 51.18116898253599] const splitter = new SplitAction(id, [splitPoint], { theme: "test", }) const changeDescription = await splitter.CreateChangeDescriptions( new Changes({ dryRun: new ImmutableStore(true), osmConnection: new OsmConnection(), }) ) expect(changeDescription.length).toBe(2) expect(changeDescription[0].type).toBe("way") expect(changeDescription[1].type).toBe("way") expect( changeDescription[0].changes["nodes"][changeDescription[0].changes["nodes"].length - 1] ).toBe(changeDescription[1].changes["nodes"][0]) expect(changeDescription[1].changes["nodes"][0]).toBe(1507524610) }) it("split 61435323 on already existing node", async () => { const id = "way/61435323" const splitPoint: [number, number] = [3.2021324336528774, 51.2170001600597] const splitter = new SplitAction(id, [splitPoint], { theme: "test", }) const changeDescription = await splitter.CreateChangeDescriptions( new Changes({ dryRun: new ImmutableStore(true), osmConnection: new OsmConnection(), }) ) // Should be a new node expect(changeDescription[0].type).toBe("node") expect(changeDescription[3].type).toBe("relation") }) it("Split test line", async () => { // Split points are lon,lat const splitPointAroundP3: [number, number] = [3.1392198801040645, 51.232701022376745] const splitAction = new SplitAction("way/941079939", [splitPointAroundP3], { theme: "test", }) const changes = await splitAction.Perform( new Changes({ dryRun: new ImmutableStore(true), osmConnection: new OsmConnection(), }) ) console.log(changes) // 8715440368 is the expected point of the split /* Nodes are 6490126559 (part of ways 941079941 and 941079940) 8715440375 8715440374 8715440373 8715440372 8715440371 8715440370 8715440369 8715440368 <--- split here 8715440367 8715440366 8715440365 8715440364 8715440363 */ expect(changes[0].changes["nodes"]).toEqual([ 6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370, 8715440369, 8715440368, ]) expect(changes[1].changes["nodes"]).toEqual([ 8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363, ]) }) it("Split minor powerline halfway", async () => { const splitPointHalfway: [number, number] = [3.1392842531204224, 51.23255322710106] const splitAction = new SplitAction( "way/941079939", [splitPointHalfway], { theme: "test" }, 1 ) const changes = await splitAction.Perform( new Changes({ dryRun: new ImmutableStore(true), osmConnection: new OsmConnection(), }) ) // THe first change is the creation of the new node expect(changes[0].type).toEqual("node") expect(changes[0].id).toEqual(-1) expect(changes[1].changes["nodes"]).toEqual([ 6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370, 8715440369, -1, ]) expect(changes[2].changes["nodes"]).toEqual([ -1, 8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363, ]) }) })