forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			46 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import { ExtraFuncParams, ExtraFunctions } from "../../src/Logic/ExtraFunctions"
							 | 
						||
| 
								 | 
							
								import { OsmFeature } from "../../src/Models/OsmFeature"
							 | 
						||
| 
								 | 
							
								import { describe, expect, it } from "vitest"
							 | 
						||
| 
								 | 
							
								import { Feature } from "geojson"
							 | 
						||
| 
								 | 
							
								import { OsmConnection } from "../../src/Logic/Osm/OsmConnection"
							 | 
						||
| 
								 | 
							
								import { ImmutableStore, UIEventSource } from "../../src/Logic/UIEventSource"
							 | 
						||
| 
								 | 
							
								import { Changes } from "../../src/Logic/Osm/Changes"
							 | 
						||
| 
								 | 
							
								import LinkImageAction from "../../src/Logic/Osm/Actions/LinkImageAction"
							 | 
						||
| 
								 | 
							
								import FeaturePropertiesStore from "../../src/Logic/FeatureSource/Actors/FeaturePropertiesStore"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe("Changes", () => {
							 | 
						||
| 
								 | 
							
								    it("should correctly apply the image tag if an image gets linked in between", async () => {
							 | 
						||
| 
								 | 
							
								        const dryRun = new ImmutableStore(true)
							 | 
						||
| 
								 | 
							
								        const osmConnection = new OsmConnection({ dryRun })
							 | 
						||
| 
								 | 
							
								        const changes = new Changes({ osmConnection, dryRun })
							 | 
						||
| 
								 | 
							
								        const id = "node/42"
							 | 
						||
| 
								 | 
							
								        const tags = new UIEventSource({ id, "amenity": "shop" })
							 | 
						||
| 
								 | 
							
								        const addImage = new LinkImageAction(id, "image", "https://example.org/uploaded_image", tags, {
							 | 
						||
| 
								 | 
							
								            theme: "test",
							 | 
						||
| 
								 | 
							
								            changeType: "add-image",
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								        const linkImage = new LinkImageAction(id, "image", "https://example.org/image_to_link", tags, {
							 | 
						||
| 
								 | 
							
								            theme: "test",
							 | 
						||
| 
								 | 
							
								            changeType: "link-image",
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        await changes.applyAction(linkImage)
							 | 
						||
| 
								 | 
							
								        await changes.applyAction(addImage)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const data = tags.data
							 | 
						||
| 
								 | 
							
								        expect(data["image:0"]).toBe("https://example.org/uploaded_image")
							 | 
						||
| 
								 | 
							
								        expect(data["image"]).toBe("https://example.org/image_to_link")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const pending = changes.pendingChanges.data
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const change0 = pending[0].tags[0]
							 | 
						||
| 
								 | 
							
								        expect(change0.k).toBe("image")
							 | 
						||
| 
								 | 
							
								        expect(change0.v).toBe("https://example.org/image_to_link")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const change1 = pending[1].tags[0]
							 | 
						||
| 
								 | 
							
								        expect(change1.k).toBe("image:0")
							 | 
						||
| 
								 | 
							
								        expect(change1.v).toBe("https://example.org/uploaded_image")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								})
							 |