Get localStorage tests running on more browsers
This commit is contained in:
parent
06309160ee
commit
e9118e3bda
|
@ -12,16 +12,7 @@ describe('WebUtil', function() {
|
||||||
|
|
||||||
describe('settings', function () {
|
describe('settings', function () {
|
||||||
|
|
||||||
// on Firefox, localStorage methods cannot be replaced
|
describe('localStorage', function() {
|
||||||
// localStorage is (currently) mockable on Chrome
|
|
||||||
// test to see if localStorage is mockable
|
|
||||||
var mockTest = sinon.spy(window.localStorage, 'setItem');
|
|
||||||
var canMock = window.localStorage.setItem.getCall instanceof Function;
|
|
||||||
mockTest.restore();
|
|
||||||
if (!canMock) {
|
|
||||||
console.warn('localStorage cannot be mocked');
|
|
||||||
}
|
|
||||||
(canMock ? describe : describe.skip)('localStorage', function() {
|
|
||||||
var chrome = window.chrome;
|
var chrome = window.chrome;
|
||||||
before(function() {
|
before(function() {
|
||||||
chrome = window.chrome;
|
chrome = window.chrome;
|
||||||
|
@ -31,16 +22,30 @@ describe('WebUtil', function() {
|
||||||
window.chrome = chrome;
|
window.chrome = chrome;
|
||||||
});
|
});
|
||||||
|
|
||||||
var lsSandbox = sinon.createSandbox();
|
var origLocalStorage;
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
lsSandbox.stub(window.localStorage, 'setItem');
|
origLocalStorage = Object.getOwnPropertyDescriptor(window, "localStorage");
|
||||||
lsSandbox.stub(window.localStorage, 'getItem');
|
if (origLocalStorage === undefined) {
|
||||||
lsSandbox.stub(window.localStorage, 'removeItem');
|
// Object.getOwnPropertyDescriptor() doesn't work
|
||||||
|
// properly in any version of IE
|
||||||
|
this.skip();
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.defineProperty(window, "localStorage", {value: {}});
|
||||||
|
if (window.localStorage.setItem !== undefined) {
|
||||||
|
// Object.defineProperty() doesn't work properly in old
|
||||||
|
// versions of Chrome
|
||||||
|
this.skip();
|
||||||
|
}
|
||||||
|
|
||||||
|
window.localStorage.setItem = sinon.stub();
|
||||||
|
window.localStorage.getItem = sinon.stub();
|
||||||
|
window.localStorage.removeItem = sinon.stub();
|
||||||
|
|
||||||
WebUtil.initSettings();
|
WebUtil.initSettings();
|
||||||
});
|
});
|
||||||
afterEach(function() {
|
afterEach(function() {
|
||||||
lsSandbox.restore();
|
Object.defineProperty(window, "localStorage", origLocalStorage);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('writeSetting', function() {
|
describe('writeSetting', function() {
|
||||||
|
|
Loading…
Reference in New Issue