Add iD.actions.AddRelationMember

This commit is contained in:
John Firebaugh
2013-01-18 14:07:44 -08:00
parent 2a0ef21548
commit 2ee07a3b74
5 changed files with 50 additions and 0 deletions
+1
View File
@@ -71,6 +71,7 @@
<script src='js/id/actions.js'></script>
<script src='js/id/actions/add_node.js'></script>
<script src='js/id/actions/add_relation_member.js'></script>
<script src='js/id/actions/add_way.js'></script>
<script src='js/id/actions/add_way_node.js'></script>
<script src='js/id/actions/change_entity_tags.js'></script>
+9
View File
@@ -0,0 +1,9 @@
iD.actions.AddRelationMember = function(relationId, member, index) {
return function(graph) {
var relation = graph.entity(relationId),
members = relation.members.slice();
members.splice((index === undefined) ? members.length : index, 0, member);
return graph.replace(relation.update({members: members}));
};
};
+2
View File
@@ -66,6 +66,7 @@
<script src='../js/id/actions.js'></script>
<script src='../js/id/actions/add_node.js'></script>
<script src="../js/id/actions/add_relation_member.js"></script>
<script src='../js/id/actions/add_way.js'></script>
<script src='../js/id/actions/add_way_node.js'></script>
<script src='../js/id/actions/change_entity_tags.js'></script>
@@ -124,6 +125,7 @@
<!-- include spec files here... -->
<script src="spec/actions/add_node.js"></script>
<script src="spec/actions/add_relation_member.js"></script>
<script src="spec/actions/add_way.js"></script>
<script src="spec/actions/add_way_node.js"></script>
<script src="spec/actions/change_entity_tags.js"></script>
+1
View File
@@ -31,6 +31,7 @@
<!-- include spec files here... -->
<script src="spec/actions/add_node.js"></script>
<script src="spec/actions/add_relation_member.js"></script>
<script src="spec/actions/add_way.js"></script>
<script src="spec/actions/add_way_node.js"></script>
<script src="spec/actions/change_entity_tags.js"></script>
+37
View File
@@ -0,0 +1,37 @@
describe("iD.actions.AddRelationMember", function () {
it("adds a member at the end of the relation", function () {
var relation = iD.Relation(),
graph = iD.Graph([relation]);
graph = iD.actions.AddRelationMember(relation.id, {id: '1'})(graph);
expect(graph.entity(relation.id).members).to.eql([{id: '1'}]);
});
it("adds a member at index 0", function () {
var relation = iD.Relation({members: [{id: '1'}]}),
graph = iD.Graph([relation]);
graph = iD.actions.AddRelationMember(relation.id, {id: '2'}, 0)(graph);
expect(graph.entity(relation.id).members).to.eql([{id: '2'}, {id: '1'}]);
});
it("adds a member at a positive index", function () {
var relation = iD.Relation({members: [{id: '1'}, {id: '3'}]}),
graph = iD.Graph([relation]);
graph = iD.actions.AddRelationMember(relation.id, {id: '2'}, 1)(graph);
expect(graph.entity(relation.id).members).to.eql([{id: '1'}, {id: '2'}, {id: '3'}]);
});
it("adds a member at a negative index", function () {
var relation = iD.Relation({members: [{id: '1'}, {id: '3'}]}),
graph = iD.Graph([relation]);
graph = iD.actions.AddRelationMember(relation.id, {id: '2'}, -1)(graph);
expect(graph.entity(relation.id).members).to.eql([{id: '1'}, {id: '2'}, {id: '3'}]);
});
});