diff --git a/modules/services/osm.js b/modules/services/osm.js index 49ce10bca..c52f7c0ad 100644 --- a/modules/services/osm.js +++ b/modules/services/osm.js @@ -319,7 +319,8 @@ export default { // find a referenced relation in the current changeset function resolve(item){ return _.find(relations, function(relation) { - return item.keyAttributes.ref === relation['@id']; + return item.keyAttributes.type === 'relation' + && item.keyAttributes.ref === relation['@id']; }); } // a new item is an item that has not been already processed diff --git a/test/spec/services/osm.js b/test/spec/services/osm.js index 000127b62..e4bc23603 100644 --- a/test/spec/services/osm.js +++ b/test/spec/services/osm.js @@ -365,8 +365,8 @@ describe('iD.serviceOsm', function () { it('includes creations ordered by dependencies', function() { var n = iD.Node({loc: [0, 0]}), w = iD.Way({nodes: [n.id]}), - r1 = iD.Relation({members: [{id: w.id}]}), - r2 = iD.Relation({members: [{id: r1.id}]}), + r1 = iD.Relation({members: [{id: w.id, type: 'way'}]}), + r2 = iD.Relation({members: [{id: r1.id, type: 'relation'}]}), changes = {created: [r2, r1, w, n], modified: [], deleted: []}, jxon = connection.osmChangeJXON('1234', changes); @@ -381,8 +381,8 @@ describe('iD.serviceOsm', function () { var r1 = iD.Relation(), r2 = iD.Relation(), changes, jxon; - r1.addMember({id: r2.id}); - r2.addMember({id: r1.id}); + r1.addMember({id: r2.id, type: 'relation'}); + r2.addMember({id: r1.id, type: 'relation'}); changes = {created: [r1,r2], modified: [], deleted: []}; jxon = connection.osmChangeJXON('1234', changes);