diff --git a/test/index.html b/test/index.html index 24c233ab4..06b9845fd 100644 --- a/test/index.html +++ b/test/index.html @@ -64,7 +64,6 @@ - @@ -101,6 +100,7 @@ + diff --git a/test/spec/services/osm.js b/test/spec/services/osm.js index 991174a2e..3757df06d 100644 --- a/test/spec/services/osm.js +++ b/test/spec/services/osm.js @@ -1,69 +1,70 @@ -describe('iD.Connection', function () { - var c; +describe('iD.serviceOsm', function () { + var connection; beforeEach(function () { - c = new iD.Connection(); + connection = iD.services.osm; + connection.switch({ urlroot: 'http://www.openstreetmap.org'}); + connection.reset(); }); it('is instantiated', function () { - expect(c).to.be.ok; + expect(connection).to.be.ok; }); it('allows insecure connections', function () { - expect(c.changesetURL(2)).to.match(/^http:/); - - c = new iD.Connection(false); - expect(c.changesetURL(2)).to.match(/^http:/); + expect(connection.changesetURL(2)).to.match(/^http:/); }); it('allows secure connections', function () { - c = new iD.Connection(true); - expect(c.changesetURL(2)).to.match(/^https:/); + connection.switch({ urlroot: 'https://www.openstreetmap.org'}); + expect(connection.changesetURL(2)).to.match(/^https:/); }); describe('#changesetUrl', function() { it('provides a changeset url', function() { - expect(c.changesetURL(2)).to.eql('http://www.openstreetmap.org/changeset/2'); + expect(connection.changesetURL(2)).to.eql('http://www.openstreetmap.org/changeset/2'); }); }); describe('#userURL', function() { it('provides a user url', function() { - expect(c.userURL('bob')).to.eql('http://www.openstreetmap.org/user/bob'); + expect(connection.userURL('bob')).to.eql('http://www.openstreetmap.org/user/bob'); }); }); - describe('#flush', function() { - it('flushes the connection', function() { - expect(c.flush()).to.eql(c); + describe('#reset', function() { + it('resets the connection', function() { + expect(connection.reset()).to.eql(connection); }); }); describe('#switch', function() { it('changes the URL', function() { - c.switch({ - url: 'http://example.com' - }); - expect(c.changesetURL(1)).to.equal('http://example.com/changeset/1'); + connection.switch({ urlroot: 'http://example.com' }); + expect(connection.changesetURL(1)).to.equal('http://example.com/changeset/1'); }); it('emits an auth event', function(done) { - c.on('auth', function() { + connection.on('auth', function() { + connection.on('auth', null); done(); }); - c.switch({ - url: 'http://example.com' - }); + connection.switch({ urlroot: 'http://example.com' }); }); }); - describe('#loadFromURL', function () { + describe('#loadFromAPI', function () { + beforeEach(function() { + // force loading locally via d3.xml + connection.switch({ urlroot: '' }).logout(); + }); + it('loads test data', function (done) { - c.loadFromURL('data/node.xml', done); + connection.loadFromAPI('data/node.xml', done); }); it('returns an object', function (done) { - c.loadFromURL('data/node.xml', function (err, graph) { + connection.loadFromAPI('data/node.xml', function (err, graph) { expect(err).to.not.be.ok; expect(typeof graph).to.eql('object'); done(); @@ -71,14 +72,14 @@ describe('iD.Connection', function () { }); it('parses a node', function (done) { - c.loadFromURL('data/node.xml', function (err, entities) { + connection.loadFromAPI('data/node.xml', function (err, entities) { expect(entities[0]).to.be.instanceOf(iD.Entity); done(); }); }); it('parses a way', function (done) { - c.loadFromURL('data/way.xml', function (err, entities) { + connection.loadFromAPI('data/way.xml', function (err, entities) { expect(entities[0]).to.be.instanceOf(iD.Entity); done(); }); @@ -105,7 +106,7 @@ describe('iD.Connection', function () { it('loads a node', function(done) { var id = 'n1'; - c.loadEntity(id, function(err, result) { + connection.loadEntity(id, function(err, result) { var entity = _.find(result.data, function(e) { return e.id === id; }); expect(entity).to.be.an.instanceOf(iD.Node); done(); @@ -118,7 +119,7 @@ describe('iD.Connection', function () { it('loads a way', function(done) { var id = 'w1'; - c.loadEntity(id, function(err, result) { + connection.loadEntity(id, function(err, result) { var entity = _.find(result.data, function(e) { return e.id === id; }); expect(entity).to.be.an.instanceOf(iD.Way); done(); @@ -149,7 +150,7 @@ describe('iD.Connection', function () { it('loads a node', function(done) { var id = 'n1'; - c.loadEntityVersion(id, 1, function(err, result) { + connection.loadEntityVersion(id, 1, function(err, result) { var entity = _.find(result.data, function(e) { return e.id === id; }); expect(entity).to.be.an.instanceOf(iD.Node); done(); @@ -162,7 +163,7 @@ describe('iD.Connection', function () { it('loads a way', function(done) { var id = 'w1'; - c.loadEntityVersion(id, 1, function(err, result) { + connection.loadEntityVersion(id, 1, function(err, result) { var entity = _.find(result.data, function(e) { return e.id === id; }); expect(entity).to.be.an.instanceOf(iD.Way); done(); @@ -192,7 +193,7 @@ describe('iD.Connection', function () { describe('#osmChangeJXON', function() { it('converts change data to JXON', function() { - var jxon = c.osmChangeJXON('1234', {created: [], modified: [], deleted: []}); + var jxon = connection.osmChangeJXON('1234', {created: [], modified: [], deleted: []}); expect(jxon).to.eql({ osmChange: { @@ -210,7 +211,7 @@ describe('iD.Connection', function () { w = iD.Way(), r = iD.Relation(), changes = {created: [r, w, n], modified: [], deleted: []}, - jxon = c.osmChangeJXON('1234', changes); + jxon = connection.osmChangeJXON('1234', changes); expect(d3.entries(jxon.osmChange.create)).to.eql([ {key: 'node', value: [n.asJXON('1234').node]}, @@ -224,7 +225,7 @@ describe('iD.Connection', function () { w = iD.Way(), r = iD.Relation(), changes = {created: [], modified: [r, w, n], deleted: []}, - jxon = c.osmChangeJXON('1234', changes); + jxon = connection.osmChangeJXON('1234', changes); expect(jxon.osmChange.modify).to.eql({ node: [n.asJXON('1234').node], @@ -238,7 +239,7 @@ describe('iD.Connection', function () { w = iD.Way(), r = iD.Relation(), changes = {created: [], modified: [], deleted: [n, w, r]}, - jxon = c.osmChangeJXON('1234', changes); + jxon = connection.osmChangeJXON('1234', changes); expect(d3.entries(jxon.osmChange.delete)).to.eql([ {key: 'relation', value: [r.asJXON('1234').relation]}, @@ -251,6 +252,7 @@ describe('iD.Connection', function () { describe('#userChangesets', function() { var server, + userDetailsFn, changesetsXML = '' + '' + '' + @@ -260,18 +262,26 @@ describe('iD.Connection', function () { beforeEach(function() { server = sinon.fakeServer.create(); + userDetailsFn = connection.userDetails; + connection.userDetails = function (callback) { + callback(undefined, { id: 1, displayName: 'Steve' }); + }; }); afterEach(function() { server.restore(); + connection.userDetails = userDetailsFn; }); it('loads user changesets', function(done) { - c.userDetails = function (callback) { - callback(undefined, { id: 1 }); - }; - - c.userChangesets(function(err, changesets) { + // preauthenticate, otherwise callback will be called with "not authenticated" err + connection.switch({ + oauth_consumer_key: '5A043yRSEugj4DJ5TljuapfnrflWDte8jTOcWLlT', + oauth_secret: 'aB3jKq1TRsCOUrfOIZ6oQMEDmv2ptV76PA54NGLL', + oauth_token: 'foo', + oauth_token_secret: 'foo' + }); + connection.userChangesets(function(err, changesets) { expect(changesets).to.deep.equal([{ tags: { comment: 'Caprice Court has been extended', @@ -289,7 +299,7 @@ describe('iD.Connection', function () { describe('#changesetTags', function() { it('omits comment when empty', function() { - expect(c.changesetTags('2.0.0', '', [])).not.to.have.property('comment'); + expect(connection.changesetTags('2.0.0', '', [])).not.to.have.property('comment'); }); }); });