forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			No EOL
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			No EOL
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import {describe} from 'mocha'
 | 
						|
import OsmFeatureSource from "../../../Logic/FeatureSource/TiledFeatureSource/OsmFeatureSource";
 | 
						|
import {UIEventSource} from "../../../Logic/UIEventSource";
 | 
						|
import ScriptUtils from "../../../scripts/ScriptUtils";
 | 
						|
import FilteredLayer, {FilterState} from "../../../Models/FilteredLayer";
 | 
						|
import {Tiles} from "../../../Models/TileRange";
 | 
						|
import {readFileSync} from "fs";
 | 
						|
import {Utils} from "../../../Utils";
 | 
						|
import {Tag} from "../../../Logic/Tags/Tag";
 | 
						|
import LayerConfig from "../../../Models/ThemeConfig/LayerConfig";
 | 
						|
import {expect} from "chai";
 | 
						|
 | 
						|
console.log(process.cwd())
 | 
						|
let data = JSON.parse(readFileSync("./test/Logic/FeatureSource/osmdata.json", "utf8"))
 | 
						|
 | 
						|
 | 
						|
describe("OsmFeatureSource", () => {
 | 
						|
 | 
						|
    it("should work", (done) => {
 | 
						|
        ScriptUtils.fixUtils()
 | 
						|
        Utils.injectJsonDownloadForTests("https://osm.org/api/0.6/map?bbox=4.24346923828125,50.732978448277514,4.2462158203125,50.73471682490244", data)
 | 
						|
        let fetchedTile = undefined;
 | 
						|
        const neededTiles = new UIEventSource<number[]>([Tiles.tile_index(17, 67081, 44033)]);
 | 
						|
        new OsmFeatureSource({
 | 
						|
            allowedFeatures: new Tag("amenity", "school"),
 | 
						|
            handleTile: tile => {
 | 
						|
                fetchedTile = tile
 | 
						|
                const data = tile.features.data[0].feature
 | 
						|
                expect(data.properties).deep.eq({
 | 
						|
                    id: 'relation/5759328', timestamp: '2022-06-10T00:46:55Z',
 | 
						|
                    version: 6,
 | 
						|
                    changeset: 122187206,
 | 
						|
                    user: 'Pieter Vander Vennet',
 | 
						|
                    uid: 3818858,
 | 
						|
                    amenity: 'school',
 | 
						|
                    'isced:2011:level': 'vocational_lower_secondary;vocational_upper_secondary',
 | 
						|
                    name: 'Koninklijk Technisch Atheneum Pro Technica',
 | 
						|
                    'school:gender': 'mixed',
 | 
						|
                    type: 'multipolygon',
 | 
						|
                    website: 'http://ktahalle.be/',
 | 
						|
                    _backend: 'https://osm.org'
 | 
						|
                })
 | 
						|
                expect(data.geometry.type).eq("MultiPolygon")
 | 
						|
                done()
 | 
						|
            },
 | 
						|
            isActive: new UIEventSource<boolean>(true),
 | 
						|
            neededTiles,
 | 
						|
            state: {
 | 
						|
                osmConnection: {
 | 
						|
                    Backend(): string {
 | 
						|
                        return "https://osm.org"
 | 
						|
                    }
 | 
						|
                },
 | 
						|
                filteredLayers: new UIEventSource<FilteredLayer[]>([
 | 
						|
                    {
 | 
						|
                        appliedFilters: new UIEventSource<Map<string, FilterState>>(undefined),
 | 
						|
                        layerDef: new LayerConfig({
 | 
						|
                            id: "school",
 | 
						|
                            source: {
 | 
						|
                                osmTags: "amenity=school"
 | 
						|
                            },
 | 
						|
                            mapRendering: null
 | 
						|
                        }),
 | 
						|
                        isDisplayed: new UIEventSource<boolean>(true)
 | 
						|
                    }
 | 
						|
                ])
 | 
						|
            }
 | 
						|
        })
 | 
						|
    })
 | 
						|
}) |