mirror of
https://github.com/FoggedLens/iD.git
synced 2026-02-13 09:12:52 +00:00
95 lines
2.5 KiB
JavaScript
95 lines
2.5 KiB
JavaScript
describe("iD.util.SessionMutex", function() {
|
|
var clock, a, b;
|
|
|
|
beforeEach(function () {
|
|
clock = sinon.useFakeTimers(Date.now());
|
|
});
|
|
|
|
afterEach(function() {
|
|
clock.restore();
|
|
if (a) a.unlock();
|
|
if (b) b.unlock();
|
|
});
|
|
|
|
describe("#lock", function() {
|
|
it("returns true when it gets a lock", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
expect(a.lock()).to.equal(true);
|
|
});
|
|
|
|
it("returns true when already locked", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
a.lock();
|
|
expect(a.lock()).to.equal(true);
|
|
});
|
|
|
|
it("returns false when the lock is held by another session", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
a.lock();
|
|
|
|
b = iD.util.SessionMutex('name');
|
|
expect(b.lock()).to.equal(false);
|
|
});
|
|
});
|
|
|
|
describe("#locked", function() {
|
|
it("returns false by default", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
expect(a.locked()).to.equal(false);
|
|
});
|
|
|
|
it("returns true when locked", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
a.lock();
|
|
expect(a.locked()).to.equal(true);
|
|
});
|
|
|
|
it("returns false when unlocked", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
a.lock();
|
|
a.unlock();
|
|
expect(a.locked()).to.equal(false);
|
|
});
|
|
});
|
|
|
|
describe("#unlock", function() {
|
|
it("unlocks the mutex", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
a.lock();
|
|
a.unlock();
|
|
|
|
b = iD.util.SessionMutex('name');
|
|
expect(b.lock()).to.equal(true);
|
|
});
|
|
|
|
it("does nothing when the lock is held by another session", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
a.lock();
|
|
|
|
b = iD.util.SessionMutex('name');
|
|
b.unlock();
|
|
|
|
expect(a.locked()).to.equal(true);
|
|
});
|
|
|
|
it("does nothing when not locked", function() {
|
|
a = iD.util.SessionMutex('name');
|
|
a.unlock();
|
|
expect(a.locked()).to.equal(false);
|
|
});
|
|
});
|
|
|
|
it("namespaces locks", function() {
|
|
a = iD.util.SessionMutex('a');
|
|
a.lock();
|
|
|
|
b = iD.util.SessionMutex('b');
|
|
expect(b.locked()).to.equal(false);
|
|
expect(b.lock()).to.equal(true);
|
|
});
|
|
|
|
it("automatically unlocks when a session crashes", function() {
|
|
// Tested manually.
|
|
});
|
|
});
|