123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- describe('persistentState', function () {
- var id = 'testContainer';
- beforeEach(function () {
- this.$container = $('<div id="' + id + '"></div>').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);
- });
- });
|