Test / fix ChangePreset action

This commit is contained in:
John Firebaugh
2013-05-29 08:44:59 -07:00
parent 2959a7f749
commit 40526764bf
4 changed files with 30 additions and 2 deletions

View File

@@ -4,8 +4,8 @@ iD.actions.ChangePreset = function(entityId, oldPreset, newPreset) {
geometry = entity.geometry(graph),
tags = entity.tags;
tags = oldPreset.removeTags(tags, geometry);
tags = newPreset.applyTags(tags, geometry);
if (oldPreset) tags = oldPreset.removeTags(tags, geometry);
if (newPreset) tags = newPreset.applyTags(tags, geometry);
return graph.replace(entity.update({tags: tags}));
};

View File

@@ -105,6 +105,7 @@
<script src='../js/id/actions/add_entity.js'></script>
<script src='../js/id/actions/add_vertex.js'></script>
<script src='../js/id/actions/change_member.js'></script>
<script src='../js/id/actions/change_preset.js'></script>
<script src='../js/id/actions/change_tags.js'></script>
<script src='../js/id/actions/connect.js'></script>
<script src='../js/id/actions/delete_member.js'></script>
@@ -189,6 +190,7 @@
<script src="spec/actions/add_midpoint.js"></script>
<script src="spec/actions/add_entity.js"></script>
<script src="spec/actions/change_member.js"></script>
<script src="spec/actions/change_preset.js"></script>
<script src="spec/actions/change_tags.js"></script>
<script src='spec/actions/circularize.js'></script>
<script src='spec/actions/orthogonalize.js'></script>

View File

@@ -28,6 +28,7 @@
<script src="spec/actions/add_midpoint.js"></script>
<script src="spec/actions/add_entity.js"></script>
<script src="spec/actions/change_member.js"></script>
<script src="spec/actions/change_preset.js"></script>
<script src="spec/actions/change_tags.js"></script>
<script src='spec/actions/circularize.js'></script>
<script src='spec/actions/connect.js'></script>

View File

@@ -0,0 +1,25 @@
describe("iD.actions.ChangePreset", function() {
var oldPreset = iD.presets.Preset('old', {tags: {old: 'true'}}),
newPreset = iD.presets.Preset('new', {tags: {new: 'true'}});
it("changes from one preset's tags to another's", function() {
var entity = iD.Node({tags: {old: 'true'}}),
graph = iD.Graph([entity]),
action = iD.actions.ChangePreset(entity.id, oldPreset, newPreset);
expect(action(graph).entity(entity.id).tags).to.eql({new: 'true'});
});
it("adds the tags of a new preset to an entity without an old preset", function() {
var entity = iD.Node(),
graph = iD.Graph([entity]),
action = iD.actions.ChangePreset(entity.id, null, newPreset);
expect(action(graph).entity(entity.id).tags).to.eql({new: 'true'});
});
it("removes the tags of an old preset from an entity without a new preset", function() {
var entity = iD.Node({tags: {old: 'true'}}),
graph = iD.Graph([entity]),
action = iD.actions.ChangePreset(entity.id, oldPreset, null);
expect(action(graph).entity(entity.id).tags).to.eql({});
});
});