Files
iD/test/spec/util/relevant_changes.js
2013-10-18 17:11:52 -04:00

97 lines
3.6 KiB
JavaScript

describe("iD.util.relevantChanges", function() {
var base = iD.Graph({
'a': iD.Node({id: 'a', loc: [0, 0]}),
'b': iD.Node({id: 'b', loc: [2, 0]}),
'c': iD.Node({id: 'c', loc: [2, 2]}),
'd': iD.Node({id: 'd', loc: [0, 2]}),
'e': iD.Node({id: 'e', loc: [0, 2]}),
'-': iD.Way({id: '-', nodes: ['a', 'b', 'c', 'd', 'e', 'a']})
});
it("returns a way that changed", function() {
var way = iD.Way({id: '-', nodes: ['a', 'b', 'c', 'd', 'a']}),
graph = base.replace(way),
changes = { modified: [way] },
a = iD.util.relevantChanges(graph, changes, base);
expect(a).to.eql([{
changeType: 'modified',
entity: way
}]);
});
it("reports an existing modified way, leaving out the verticies", function() {
var way = iD.Way({id: '-', nodes: ['a', 'b', 'c', 'd', 'e', 'a']}),
vertex = iD.Node({id: 'e', loc: [0, 3]}),
graph = base.replace(way).replace(vertex),
changes = { modified: [way, vertex] },
a = iD.util.relevantChanges(graph, changes, base);
expect(a).to.eql([{
changeType: 'modified',
entity: way
}]);
});
it("reports an existing way as modified when a member vertex is modified", function() {
var vertex = base.entity('e').move([0,3]),
graph = base.replace(vertex),
changes = { modified: [vertex], deleted: [] },
a = iD.util.relevantChanges(graph, changes, base);
expect(a).to.eql([{
changeType: 'modified',
entity: graph.entity('-')
}]);
});
it("reports a created way containing a moved vertex as being created", function() {
var vertex = base.entity('e').move([0,3]),
way = iD.Way({id: '+', nodes: ['e']}),
graph = base.replace(way).replace(vertex),
changes = { created: [way], modified: [vertex, graph.entity('-')] },
a = iD.util.relevantChanges(graph, changes, base);
expect(a).to.eql([{
changeType: 'created',
entity: way
}, {
changeType: 'modified',
entity: graph.entity('-')
}]);
});
it("reports an existing way with an added vertex as being modified", function() {
var vertex = iD.Node({id: 'f'}),
graph = base.replace(vertex).replace(base.entity('-').addNode('f'));
var changes = {
created: [vertex],
modified: [graph.entity('-')]
},
a = iD.util.relevantChanges(graph, changes, base);
expect(a).to.eql([{
changeType: 'modified',
entity: graph.entity('-')
}]);
});
it("reports a created way with a created vertex as being created", function() {
var vertex = iD.Node({id: 'f'}),
way = iD.Way({id: '+', nodes: ['f']}),
graph = base.replace(vertex).replace(way),
changes = { created: [way, vertex] },
a = iD.util.relevantChanges(graph, changes, base);
expect(a).to.eql([{
changeType: 'created',
entity: way
}]);
});
it("reports an existing vertex with added tags as modified", function() {
var vertex = iD.Node({id: 'f', tags: {yes: 'it works'}}),
graph = base.replace(vertex),
changes = { modified: [vertex] },
a = iD.util.relevantChanges(graph, changes, base);
expect(a).to.eql([{
changeType: 'modified',
entity: vertex
}]);
});
});