mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-13 17:23:02 +00:00
123 lines
4.8 KiB
JavaScript
123 lines
4.8 KiB
JavaScript
describe('iD.osmChangeset', function () {
|
|
it('returns a changeset', function () {
|
|
expect(iD.osmChangeset()).to.be.an.instanceOf(iD.osmChangeset);
|
|
expect(iD.osmChangeset().type).to.equal('changeset');
|
|
});
|
|
|
|
it('defaults tags to an empty object', function () {
|
|
expect(iD.osmChangeset().tags).to.eql({});
|
|
});
|
|
|
|
it('sets tags as specified', function () {
|
|
expect(iD.osmChangeset({tags: {foo: 'bar'}}).tags).to.eql({foo: 'bar'});
|
|
});
|
|
|
|
|
|
describe('#asJXON', function () {
|
|
it('converts a node to jxon', function() {
|
|
var node = iD.osmChangeset({tags: {'comment': 'hello'}});
|
|
expect(node.asJXON()).to.eql({
|
|
osm: {
|
|
changeset: {
|
|
tag: [{ '@k': 'comment', '@v': 'hello' }],
|
|
'@version': 0.6,
|
|
'@generator': 'iD'
|
|
}
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
|
|
describe('#osmChangeJXON', function() {
|
|
it('converts change data to JXON', function() {
|
|
var changeset = iD.osmChangeset();
|
|
var jxon = changeset.osmChangeJXON({ created: [], modified: [], deleted: [] });
|
|
|
|
expect(jxon).to.eql({
|
|
osmChange: {
|
|
'@version': 0.6,
|
|
'@generator': 'iD',
|
|
'create': {},
|
|
'modify': {},
|
|
'delete': { '@if-unused': true }
|
|
}
|
|
});
|
|
});
|
|
|
|
it('includes creations ordered by nodes, ways, relations', function() {
|
|
var n = iD.osmNode({ loc: [0, 0] });
|
|
var w = iD.osmWay();
|
|
var r = iD.osmRelation();
|
|
var c = iD.osmChangeset({ id: '1234' });
|
|
var changes = { created: [r, w, n], modified: [], deleted: [] };
|
|
var jxon = c.osmChangeJXON(changes);
|
|
|
|
var result = jxon.osmChange.create;
|
|
expect(result.node).to.eql([n.asJXON('1234').node]);
|
|
expect(result.way).to.eql([w.asJXON('1234').way]);
|
|
expect(result.relation).to.eql([r.asJXON('1234').relation]);
|
|
});
|
|
|
|
it('includes creations ordered by dependencies', function() {
|
|
var n = iD.osmNode({ loc: [0, 0] });
|
|
var w = iD.osmWay({nodes: [n.id]});
|
|
var r1 = iD.osmRelation({ members: [{ id: w.id, type: 'way' }] });
|
|
var r2 = iD.osmRelation({ members: [{ id: r1.id, type: 'relation' }] });
|
|
var c = iD.osmChangeset({ id: '1234' });
|
|
var changes = { created: [r2, r1, w, n], modified: [], deleted: [] };
|
|
var jxon = c.osmChangeJXON(changes);
|
|
|
|
var result = jxon.osmChange.create;
|
|
expect(result.node).to.eql([n.asJXON('1234').node]);
|
|
expect(result.way).to.eql([w.asJXON('1234').way]);
|
|
expect(result.relation).to.eql([r1.asJXON('1234').relation, r2.asJXON('1234').relation]);
|
|
});
|
|
|
|
it('includes creations ignoring circular dependencies', function() {
|
|
var r1 = iD.osmRelation();
|
|
var r2 = iD.osmRelation();
|
|
var c = iD.osmChangeset({ id: '1234' });
|
|
var changes, jxon;
|
|
r1.addMember({ id: r2.id, type: 'relation' });
|
|
r2.addMember({ id: r1.id, type: 'relation' });
|
|
changes = { created: [r1,r2], modified: [], deleted: [] };
|
|
jxon = c.osmChangeJXON(changes);
|
|
|
|
var result = jxon.osmChange.create;
|
|
expect(result.relation).to.eql([r1.asJXON('1234').relation, r2.asJXON('1234').relation]);
|
|
});
|
|
|
|
it('includes modifications', function() {
|
|
var n = iD.osmNode({ loc: [0, 0] });
|
|
var w = iD.osmWay();
|
|
var r = iD.osmRelation();
|
|
var c = iD.osmChangeset({ id: '1234' });
|
|
var changes = { created: [], modified: [r, w, n], deleted: [] };
|
|
var jxon = c.osmChangeJXON(changes);
|
|
|
|
expect(jxon.osmChange.modify).to.eql({
|
|
node: [n.asJXON('1234').node],
|
|
way: [w.asJXON('1234').way],
|
|
relation: [r.asJXON('1234').relation]
|
|
});
|
|
});
|
|
|
|
it('includes deletions ordered by relations, ways, nodes', function() {
|
|
var n = iD.osmNode({ loc: [0, 0] });
|
|
var w = iD.osmWay();
|
|
var r = iD.osmRelation();
|
|
var c = iD.osmChangeset({ id: '1234' });
|
|
var changes = { created: [], modified: [], deleted: [n, w, r] };
|
|
var jxon = c.osmChangeJXON(changes);
|
|
|
|
var result = jxon.osmChange.delete;
|
|
expect(result.node).to.eql([n.asJXON('1234').node]);
|
|
expect(result.way).to.eql([w.asJXON('1234').way]);
|
|
expect(result.relation).to.eql([r.asJXON('1234').relation]);
|
|
expect(result['@if-unused']).to.eql(true);
|
|
});
|
|
});
|
|
|
|
});
|