mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-16 02:32:53 +00:00
91 lines
3.6 KiB
JavaScript
91 lines
3.6 KiB
JavaScript
describe('iD.actionAddMember', function() {
|
|
it('adds an member to a relation at the specified index', function() {
|
|
var r = iD.Relation({members: [{id: '1'}, {id: '3'}]}),
|
|
g = iD.actionAddMember(r.id, {id: '2'}, 1)(iD.Graph([r]));
|
|
expect(g.entity(r.id).members).to.eql([{id: '1'}, {id: '2'}, {id: '3'}]);
|
|
});
|
|
|
|
describe('inserts way members at a sensible index', function() {
|
|
function members(graph) {
|
|
return _.map(graph.entity('r').members, 'id');
|
|
}
|
|
|
|
specify('no members', function() {
|
|
var graph = iD.Graph([
|
|
iD.Node({id: 'a', loc: [0, 0]}),
|
|
iD.Node({id: 'b', loc: [0, 0]}),
|
|
iD.Way({id: '-', nodes: ['a', 'b']}),
|
|
iD.Relation({id: 'r'})
|
|
]);
|
|
|
|
graph = iD.actionAddMember('r', {id: '-', type: 'way'})(graph);
|
|
expect(members(graph)).to.eql(['-']);
|
|
});
|
|
|
|
specify('not connecting', function() {
|
|
// a--->b c===>d
|
|
var graph = iD.Graph([
|
|
iD.Node({id: 'a', loc: [0, 0]}),
|
|
iD.Node({id: 'b', loc: [0, 0]}),
|
|
iD.Node({id: 'c', loc: [0, 0]}),
|
|
iD.Node({id: 'd', loc: [0, 0]}),
|
|
iD.Way({id: '-', nodes: ['a', 'b']}),
|
|
iD.Way({id: '=', nodes: ['c', 'd']}),
|
|
iD.Relation({id: 'r', members: [{id: '-', type: 'way'}]})
|
|
]);
|
|
|
|
graph = iD.actionAddMember('r', {id: '=', type: 'way'})(graph);
|
|
expect(members(graph)).to.eql(['-', '=']);
|
|
});
|
|
|
|
specify('connecting at end', function() {
|
|
// a--->b===>c
|
|
var graph = iD.Graph([
|
|
iD.Node({id: 'a', loc: [0, 0]}),
|
|
iD.Node({id: 'b', loc: [0, 0]}),
|
|
iD.Node({id: 'c', loc: [0, 0]}),
|
|
iD.Way({id: '-', nodes: ['a', 'b']}),
|
|
iD.Way({id: '=', nodes: ['b', 'c']}),
|
|
iD.Relation({id: 'r', members: [{id: '-', type: 'way'}]})
|
|
]);
|
|
|
|
graph = iD.actionAddMember('r', {id: '=', type: 'way'})(graph);
|
|
expect(members(graph)).to.eql(['-', '=']);
|
|
});
|
|
|
|
specify('connecting at beginning', function() {
|
|
// a===>b--->c~~~>d
|
|
var graph = iD.Graph([
|
|
iD.Node({id: 'a', loc: [0, 0]}),
|
|
iD.Node({id: 'b', loc: [0, 0]}),
|
|
iD.Node({id: 'c', loc: [0, 0]}),
|
|
iD.Node({id: 'd', loc: [0, 0]}),
|
|
iD.Way({id: '=', nodes: ['a', 'b']}),
|
|
iD.Way({id: '-', nodes: ['b', 'c']}),
|
|
iD.Way({id: '~', nodes: ['c', 'd']}),
|
|
iD.Relation({id: 'r', members: [{id: '-', type: 'way'}, {id: '~', type: 'way'}]})
|
|
]);
|
|
|
|
graph = iD.actionAddMember('r', {id: '=', type: 'way'})(graph);
|
|
expect(members(graph)).to.eql(['=', '-', '~']);
|
|
});
|
|
|
|
specify('connecting in middle', function() {
|
|
// a--->b===>c~~~>d
|
|
var graph = iD.Graph([
|
|
iD.Node({id: 'a', loc: [0, 0]}),
|
|
iD.Node({id: 'b', loc: [0, 0]}),
|
|
iD.Node({id: 'c', loc: [0, 0]}),
|
|
iD.Node({id: 'd', loc: [0, 0]}),
|
|
iD.Way({id: '-', nodes: ['a', 'b']}),
|
|
iD.Way({id: '=', nodes: ['b', 'c']}),
|
|
iD.Way({id: '~', nodes: ['c', 'd']}),
|
|
iD.Relation({id: 'r', members: [{id: '-', type: 'way'}, {id: '~', type: 'way'}]})
|
|
]);
|
|
|
|
graph = iD.actionAddMember('r', {id: '=', type: 'way'})(graph);
|
|
expect(members(graph)).to.eql(['-', '=', '~']);
|
|
});
|
|
});
|
|
});
|