| 
									
										
										
										
											2022-03-17 21:51:53 +01:00
										 |  |  | import { expect } from "chai" | 
					
						
							|  |  |  | import { Utils } from "../../../Utils" | 
					
						
							|  |  |  | import UserRelatedState from "../../../Logic/State/UserRelatedState" | 
					
						
							|  |  |  | import LayoutConfig from "../../../Models/ThemeConfig/LayoutConfig" | 
					
						
							|  |  |  | import SelectedElementTagsUpdater from "../../../Logic/Actors/SelectedElementTagsUpdater" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import * as bookcaseJson from "../../../assets/generated/themes/bookcases.json" | 
					
						
							|  |  |  | import { UIEventSource } from "../../../Logic/UIEventSource" | 
					
						
							|  |  |  | import Loc from "../../../Models/Loc" | 
					
						
							|  |  |  | import SelectedFeatureHandler from "../../../Logic/Actors/SelectedFeatureHandler" | 
					
						
							|  |  |  | import { ElementStorage } from "../../../Logic/ElementStorage" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const latestTags = { | 
					
						
							|  |  |  |     amenity: "public_bookcase", | 
					
						
							|  |  |  |     books: "children;adults", | 
					
						
							|  |  |  |     capacity: "25", | 
					
						
							|  |  |  |     description: "Deze boekenruilkast vindt je recht tegenover de Pim Pam Poem", | 
					
						
							|  |  |  |     "image:0": "https://i.imgur.com/Z8a69UG.jpg", | 
					
						
							|  |  |  |     name: "Stubbekwartier-buurtbibliotheek", | 
					
						
							|  |  |  |     nobrand: "yes", | 
					
						
							|  |  |  |     opening_hours: "24/7", | 
					
						
							|  |  |  |     operator: "Huisbewoner", | 
					
						
							|  |  |  |     "public_bookcase:type": "reading_box", | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Utils.injectJsonDownloadForTests("https://www.openstreetmap.org/api/0.6/node/5568693115", { | 
					
						
							|  |  |  |     version: "0.6", | 
					
						
							|  |  |  |     generator: "CGImap 0.8.5 (1815943 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: 5568693115, | 
					
						
							|  |  |  |             lat: 51.2179199, | 
					
						
							|  |  |  |             lon: 3.2154662, | 
					
						
							|  |  |  |             timestamp: "2021-08-21T16:22:55Z", | 
					
						
							|  |  |  |             version: 6, | 
					
						
							|  |  |  |             changeset: 110034454, | 
					
						
							|  |  |  |             user: "Pieter Vander Vennet", | 
					
						
							|  |  |  |             uid: 3818858, | 
					
						
							|  |  |  |             tags: latestTags, | 
					
						
							|  |  |  |         }, | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |     ], | 
					
						
							| 
									
										
										
										
											2022-03-17 21:51:53 +01:00
										 |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | it("should download the latest version", () => { | 
					
						
							| 
									
										
										
										
											2022-04-18 02:39:30 +02:00
										 |  |  |     const state = new UserRelatedState(new LayoutConfig(<any>bookcaseJson, true)) | 
					
						
							| 
									
										
										
										
											2022-03-17 21:51:53 +01:00
										 |  |  |     const feature = { | 
					
						
							|  |  |  |         type: "Feature", | 
					
						
							|  |  |  |         id: "node/5568693115", | 
					
						
							|  |  |  |         properties: { | 
					
						
							|  |  |  |             amenity: "public_bookcase", | 
					
						
							|  |  |  |             books: "children;adults", | 
					
						
							|  |  |  |             capacity: "25", | 
					
						
							|  |  |  |             description: "Deze boekenruilkast vindt je recht tegenover de Pim Pam Poem", | 
					
						
							|  |  |  |             "image:0": "https://i.imgur.com/Z8a69UG.jpg", | 
					
						
							|  |  |  |             name: "OUTDATED NAME", | 
					
						
							|  |  |  |             nobrand: "yes", | 
					
						
							|  |  |  |             opening_hours: "24/7", | 
					
						
							|  |  |  |             operator: "Huisbewoner", | 
					
						
							|  |  |  |             "public_bookcase:type": "reading_box", | 
					
						
							|  |  |  |             id: "node/5568693115", | 
					
						
							|  |  |  |             _lat: "51.2179199", | 
					
						
							|  |  |  |             _lon: "3.2154662", | 
					
						
							|  |  |  |             fixme: "SOME FIXME", | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         geometry: { | 
					
						
							|  |  |  |             type: "Point", | 
					
						
							|  |  |  |             coordinates: [3.2154662, 51.2179199], | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         bbox: { | 
					
						
							|  |  |  |             maxLat: 51.2179199, | 
					
						
							|  |  |  |             maxLon: 3.2154662, | 
					
						
							|  |  |  |             minLat: 51.2179199, | 
					
						
							|  |  |  |             minLon: 3.2154662, | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         _lon: 3.2154662, | 
					
						
							|  |  |  |         _lat: 51.2179199, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     state.allElements.addOrGetElement(feature) | 
					
						
							|  |  |  |     SelectedElementTagsUpdater.installCallback(state) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // THis should trigger a download of the latest feaures and update the tags
 | 
					
						
							|  |  |  |     // However, this doesn't work with ts-node for some reason
 | 
					
						
							|  |  |  |     state.selectedElement.setData(feature) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     SelectedElementTagsUpdater.applyUpdate(state, latestTags, feature.properties.id) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // The name should be updated
 | 
					
						
							| 
									
										
										
										
											2022-03-23 19:48:06 +01:00
										 |  |  |     expect(feature.properties.name).deep.equal("Stubbekwartier-buurtbibliotheek") | 
					
						
							| 
									
										
										
										
											2022-03-17 21:51:53 +01:00
										 |  |  |     // The fixme should be removed
 | 
					
						
							| 
									
										
										
										
											2022-03-23 19:48:06 +01:00
										 |  |  |     expect(feature.properties.fixme).deep.equal(undefined) | 
					
						
							| 
									
										
										
										
											2022-03-17 21:51:53 +01:00
										 |  |  | }) | 
					
						
							|  |  |  | it("Hash without selected element should download geojson from OSM-API", async () => { | 
					
						
							|  |  |  |     const hash = new UIEventSource("node/5568693115") | 
					
						
							|  |  |  |     const selected = new UIEventSource(undefined) | 
					
						
							|  |  |  |     const loc = new UIEventSource<Loc>({ | 
					
						
							|  |  |  |         lat: 0, | 
					
						
							|  |  |  |         lon: 0, | 
					
						
							|  |  |  |         zoom: 0, | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     loc.addCallback((_) => { | 
					
						
							| 
									
										
										
										
											2022-03-23 19:48:06 +01:00
										 |  |  |         expect(selected.data.properties.id).deep.equal("node/5568693115") | 
					
						
							|  |  |  |         expect(loc.data.zoom).deep.equal(14) | 
					
						
							|  |  |  |         expect(loc.data.lat).deep.equal(51.2179199) | 
					
						
							| 
									
										
										
										
											2022-03-17 21:51:53 +01:00
										 |  |  |     }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     new SelectedFeatureHandler(hash, { | 
					
						
							|  |  |  |         selectedElement: selected, | 
					
						
							|  |  |  |         allElements: new ElementStorage(), | 
					
						
							|  |  |  |         featurePipeline: undefined, | 
					
						
							|  |  |  |         locationControl: loc, | 
					
						
							|  |  |  |         layoutToUse: undefined, | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  | }) |