mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-13 09:12:52 +00:00
* Support move, rotate, reflect, delete post paste on multiselection * Improve text and error msgs for singular vs multi selections * Move `disabled` checks from actions to operations * Reproject center of rotation (closes #3667) * Cleanup tests
95 lines
4.3 KiB
JavaScript
95 lines
4.3 KiB
JavaScript
describe('iD.actionDeleteRelation', function () {
|
|
it('removes the relation from the graph', function () {
|
|
var relation = iD.Relation(),
|
|
action = iD.actionDeleteRelation(relation.id),
|
|
graph = action(iD.Graph([relation]));
|
|
expect(graph.hasEntity(relation.id)).to.be.undefined;
|
|
});
|
|
|
|
it('removes the relation from parent relations', function () {
|
|
var a = iD.Relation(),
|
|
b = iD.Relation(),
|
|
parent = iD.Relation({members: [{ id: a.id }, { id: b.id }]}),
|
|
action = iD.actionDeleteRelation(a.id),
|
|
graph = action(iD.Graph([a, b, parent]));
|
|
expect(graph.entity(parent.id).members).to.eql([{ id: b.id }]);
|
|
});
|
|
|
|
it('deletes member nodes not referenced by another parent', function() {
|
|
var node = iD.Node(),
|
|
relation = iD.Relation({members: [{id: node.id}]}),
|
|
action = iD.actionDeleteRelation(relation.id),
|
|
graph = action(iD.Graph([node, relation]));
|
|
expect(graph.hasEntity(node.id)).to.be.undefined;
|
|
});
|
|
|
|
it('does not delete member nodes referenced by another parent', function() {
|
|
var node = iD.Node(),
|
|
way = iD.Way({nodes: [node.id]}),
|
|
relation = iD.Relation({members: [{id: node.id}]}),
|
|
action = iD.actionDeleteRelation(relation.id),
|
|
graph = action(iD.Graph([node, way, relation]));
|
|
expect(graph.hasEntity(node.id)).not.to.be.undefined;
|
|
});
|
|
|
|
it('does not delete member nodes with interesting tags', function() {
|
|
var node = iD.Node({tags: {highway: 'traffic_signals'}}),
|
|
relation = iD.Relation({members: [{id: node.id}]}),
|
|
action = iD.actionDeleteRelation(relation.id),
|
|
graph = action(iD.Graph([node, relation]));
|
|
expect(graph.hasEntity(node.id)).not.to.be.undefined;
|
|
});
|
|
|
|
it('deletes member ways not referenced by another parent', function() {
|
|
var way = iD.Way(),
|
|
relation = iD.Relation({members: [{id: way.id}]}),
|
|
action = iD.actionDeleteRelation(relation.id),
|
|
graph = action(iD.Graph([way, relation]));
|
|
expect(graph.hasEntity(way.id)).to.be.undefined;
|
|
});
|
|
|
|
it('does not delete member ways referenced by another parent', function() {
|
|
var way = iD.Way(),
|
|
relation1 = iD.Relation({members: [{id: way.id}]}),
|
|
relation2 = iD.Relation({members: [{id: way.id}]}),
|
|
action = iD.actionDeleteRelation(relation1.id),
|
|
graph = action(iD.Graph([way, relation1, relation2]));
|
|
expect(graph.hasEntity(way.id)).not.to.be.undefined;
|
|
});
|
|
|
|
it('does not delete member ways with interesting tags', function() {
|
|
var way = iD.Node({tags: {highway: 'residential'}}),
|
|
relation = iD.Relation({members: [{id: way.id}]}),
|
|
action = iD.actionDeleteRelation(relation.id),
|
|
graph = action(iD.Graph([way, relation]));
|
|
expect(graph.hasEntity(way.id)).not.to.be.undefined;
|
|
});
|
|
|
|
it('deletes nodes of deleted member ways', function() {
|
|
var node = iD.Node(),
|
|
way = iD.Way({nodes: [node.id]}),
|
|
relation = iD.Relation({members: [{id: way.id}]}),
|
|
action = iD.actionDeleteRelation(relation.id),
|
|
graph = action(iD.Graph([node, way, relation]));
|
|
expect(graph.hasEntity(node.id)).to.be.undefined;
|
|
});
|
|
|
|
it('deletes parent relations that become empty', function () {
|
|
var child = iD.Relation(),
|
|
parent = iD.Relation({members: [{ id: child.id }]}),
|
|
action = iD.actionDeleteRelation(child.id),
|
|
graph = action(iD.Graph([child, parent]));
|
|
expect(graph.hasEntity(parent.id)).to.be.undefined;
|
|
});
|
|
|
|
// This was moved to operationDelete. We should test operations and move this test there.
|
|
// describe('#disabled', function() {
|
|
// it('returns \'incomplete_relation\' if the relation is incomplete', function() {
|
|
// var relation = iD.Relation({members: [{id: 'w'}]}),
|
|
// graph = iD.Graph([relation]),
|
|
// action = iD.actionDeleteRelation(relation.id);
|
|
// expect(action.disabled(graph)).to.equal('incomplete_relation');
|
|
// });
|
|
// });
|
|
});
|