'use strict'; describe('persistentState', function () { var id = 'testContainer'; beforeEach(function () { this.$container = $('
').appendTo('body'); }); afterEach(function () { if (this.$container) { destroy(); this.$container.remove(); } window.localStorage.clear(); }); it('should save data, when persistentStateSave is run', function () { var hot = handsontable({ persistentState: true }); hot.runHooks('persistentStateSave', 'testData', 100); var rawStoredData = window.localStorage[id + '_testData']; expect(rawStoredData).toBeDefined(); var storedData = JSON.parse(rawStoredData); expect(storedData).toEqual(100); }); it('should NOT save data, when persistentStateSave is run, if plugin is not enabled', function () { var hot = handsontable({ persistentState: false }); hot.runHooks('persistentStateSave', 'testData', 100); var rawStoredData = window.localStorage[id + '_testData']; expect(rawStoredData).toBeUndefined(); }); it('should load data, when persistentStateLoad is run', function () { var hot = handsontable({ persistentState: true }); hot.runHooks('persistentStateSave', 'testData', 100); var storedData = {}; hot.runHooks('persistentStateLoad', 'testData', storedData); expect(storedData.value).toEqual(100); }); it('should NOT load data, when persistentStateLoad is run, if plugin is not enabled', function () { var hot = handsontable({ persistentState: false }); // We have to manually save data, as persistentStateSave won't work when the plugin is disabled window.localStorage[id + '_testData'] = JSON.stringify(100); var storedData = {}; hot.runHooks('persistentStateLoad', 'testData', storedData); expect(storedData.value).toBeUndefined(); }); it('should clear the data under the given key, when persistentStateReset is run', function () { var hot = handsontable({ persistentState: true }); hot.runHooks('persistentStateSave', 'testData', 100); var storedData = {}; hot.runHooks('persistentStateLoad', 'testData', storedData); expect(storedData.value).toEqual(100); hot.runHooks('persistentStateReset', 'testData'); storedData = {}; hot.runHooks('persistentStateLoad', 'testData', storedData); expect(storedData.value).toBeUndefined(); }); it('should NOT clear the data under the given key, when persistentStateReset is run', function () { var hot = handsontable({ persistentState: false }); // We have to manually save data, as persistentStateSave won't work when the plugin is disabled window.localStorage[id + '_testData'] = JSON.stringify(100); var storedData = {}; hot.runHooks('persistentStateReset', 'testData'); expect(JSON.parse(window.localStorage[id + '_testData'])).toEqual(100); }); it('should clear all data, when persistentStateReset is run without specifying a key to reset', function () { var hot = handsontable({ persistentState: true }); hot.runHooks('persistentStateSave', 'testData0', 100); hot.runHooks('persistentStateSave', 'testData1', 'foo'); hot.runHooks('persistentStateSave', 'testData2', 200); var storedData = [{}, {}, {}]; hot.runHooks('persistentStateLoad', 'testData0', storedData[0]); hot.runHooks('persistentStateLoad', 'testData1', storedData[1]); hot.runHooks('persistentStateLoad', 'testData2', storedData[2]); expect(storedData[0].value).toEqual(100); expect(storedData[1].value).toEqual('foo'); expect(storedData[2].value).toEqual(200); hot.runHooks('persistentStateReset'); storedData = [{}, {}, {}]; hot.runHooks('persistentStateLoad', 'testData0', storedData[0]); hot.runHooks('persistentStateLoad', 'testData1', storedData[1]); hot.runHooks('persistentStateLoad', 'testData2', storedData[2]); expect(storedData[0].value).toBeUndefined(); expect(storedData[1].value).toBeUndefined(); expect(storedData[2].value).toBeUndefined(); }); it('should allow to DISABLE plugin with updateSettings', function () { var hot = handsontable({ persistentState: true }); hot.runHooks('persistentStateSave', 'testData', 100); var storedData = {}; hot.runHooks('persistentStateLoad', 'testData', storedData); expect(storedData.value).toEqual(100); updateSettings({ persistentState: false }); storedData = {}; hot.runHooks('persistentStateLoad', 'testData', storedData); expect(storedData.value).toBeUndefined(); }); it('should allow to ENABLE plugin with updateSettings', function () { var hot = handsontable({ persistentState: false }); hot.runHooks('persistentStateSave', 'testData', 100); var storedData = {}; hot.runHooks('persistentStateLoad', 'testData', storedData); expect(storedData.value).toBeUndefined(); updateSettings({ persistentState: true }); hot.runHooks('persistentStateSave', 'testData', 100); storedData = {}; hot.runHooks('persistentStateLoad', 'testData', storedData); expect(storedData.value).toEqual(100); }); });