Files
iD/test/spec/behavior/hash.js
John Firebaugh 000ceb6467 iD.Context -> iD
All the UI setup code moved to iD.ui.
2013-02-01 12:40:15 -05:00

62 lines
1.7 KiB
JavaScript

describe("iD.behavior.Hash", function () {
mocha.globals('__onhashchange.hash');
var hash, context;
beforeEach(function () {
context = iD();
// Neuter connection
context.connection().loadTiles = function () {};
hash = iD.behavior.Hash(context);
d3.select(document.createElement('div'))
.call(context.map());
});
afterEach(function () {
hash.off();
});
it("sets hadHash if location.hash is present", function () {
location.hash = "map=20.00/38.87952/-77.02405";
hash();
expect(hash.hadHash).to.be.true;
});
it("centerZooms map to requested level", function () {
location.hash = "map=20.00/38.87952/-77.02405";
hash();
expect(context.map().center()[0]).to.be.closeTo(-77.02405, 0.1);
expect(context.map().center()[1]).to.be.closeTo(38.87952, 0.1);
expect(context.map().zoom()).to.equal(20.0);
});
it("centerZooms map at requested coordinates on hash change", function (done) {
hash();
d3.select(window).one('hashchange', function () {
expect(context.map().center()[0]).to.be.closeTo(-77.02405, 0.1);
expect(context.map().center()[1]).to.be.closeTo(38.87952, 0.1);
expect(context.map().zoom()).to.equal(20.0);
done();
});
location.hash = "#map=20.00/38.87952/-77.02405";
});
it("stores the current zoom and coordinates in location.hash on map move events", function () {
hash();
context.map().center([38.9, -77.0]);
context.map().zoom(2.0);
expect(location.hash).to.equal("#map=2.00/-77.0/38.9");
});
});