forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { describe, expect, it } from "vitest"
 | 
						|
import { UIEventSource } from "../../src/Logic/UIEventSource"
 | 
						|
import { Changes } from "../../src/Logic/Osm/Changes"
 | 
						|
import LinkImageAction from "../../src/Logic/Osm/Actions/LinkImageAction"
 | 
						|
 | 
						|
describe("Changes", () => {
 | 
						|
    it("should correctly apply the image tag if an image gets linked in between", async () => {
 | 
						|
        const changes = Changes.createTestObject()
 | 
						|
        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")
 | 
						|
    })
 | 
						|
})
 |