diff --git a/index.html b/index.html index 3cddaed4f..5dc6ad04d 100644 --- a/index.html +++ b/index.html @@ -118,8 +118,10 @@ + + diff --git a/js/id/actions/change_member.js b/js/id/actions/change_member.js new file mode 100644 index 000000000..ece118fab --- /dev/null +++ b/js/id/actions/change_member.js @@ -0,0 +1,5 @@ +iD.actions.ChangeMember = function(relationId, member, memberIndex) { + return function(graph) { + return graph.replace(graph.entity(relationId).updateMember(member, memberIndex)); + } +}; diff --git a/test/index.html b/test/index.html index 580885630..930bf8e5e 100644 --- a/test/index.html +++ b/test/index.html @@ -103,6 +103,7 @@ + @@ -185,6 +186,7 @@ + diff --git a/test/index_packaged.html b/test/index_packaged.html index 15bcef8df..b1a09c908 100644 --- a/test/index_packaged.html +++ b/test/index_packaged.html @@ -27,6 +27,7 @@ + diff --git a/test/spec/actions/change_member.js b/test/spec/actions/change_member.js new file mode 100644 index 000000000..c3d4291f1 --- /dev/null +++ b/test/spec/actions/change_member.js @@ -0,0 +1,9 @@ +describe("iD.actions.ChangeMember", function () { + it("updates the member at the specified index", function () { + var node = iD.Node(), + relation = iD.Relation({members: [{id: node.id}]}), + action = iD.actions.ChangeMember(relation.id, {id: node.id, role: 'node'}, 0), + graph = action(iD.Graph([node, relation])); + expect(graph.entity(relation.id).members).to.eql([{id: node.id, role: 'node'}]); + }); +}); diff --git a/test/spec/actions/delete_member.js b/test/spec/actions/delete_member.js index bb6e9c85c..f23cdb700 100644 --- a/test/spec/actions/delete_member.js +++ b/test/spec/actions/delete_member.js @@ -1,7 +1,7 @@ describe("iD.actions.DeleteMember", function () { it("removes the member at the specified index", function () { var node = iD.Node(), - relation = iD.Relation({members: [node.id]}), + relation = iD.Relation({members: [{id: node.id}]}), action = iD.actions.DeleteMember(relation.id, 0), graph = action(iD.Graph([node, relation])); expect(graph.entity(relation.id).members).to.eql([]);