persistentState.e2e.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. 'use strict';
  2. describe('persistentState', function () {
  3. var id = 'testContainer';
  4. beforeEach(function () {
  5. this.$container = $('<div id="' + id + '"></div>').appendTo('body');
  6. });
  7. afterEach(function () {
  8. if (this.$container) {
  9. destroy();
  10. this.$container.remove();
  11. }
  12. window.localStorage.clear();
  13. });
  14. it('should save data, when persistentStateSave is run', function () {
  15. var hot = handsontable({
  16. persistentState: true
  17. });
  18. hot.runHooks('persistentStateSave', 'testData', 100);
  19. var rawStoredData = window.localStorage[id + '_testData'];
  20. expect(rawStoredData).toBeDefined();
  21. var storedData = JSON.parse(rawStoredData);
  22. expect(storedData).toEqual(100);
  23. });
  24. it('should NOT save data, when persistentStateSave is run, if plugin is not enabled', function () {
  25. var hot = handsontable({
  26. persistentState: false
  27. });
  28. hot.runHooks('persistentStateSave', 'testData', 100);
  29. var rawStoredData = window.localStorage[id + '_testData'];
  30. expect(rawStoredData).toBeUndefined();
  31. });
  32. it('should load data, when persistentStateLoad is run', function () {
  33. var hot = handsontable({
  34. persistentState: true
  35. });
  36. hot.runHooks('persistentStateSave', 'testData', 100);
  37. var storedData = {};
  38. hot.runHooks('persistentStateLoad', 'testData', storedData);
  39. expect(storedData.value).toEqual(100);
  40. });
  41. it('should NOT load data, when persistentStateLoad is run, if plugin is not enabled', function () {
  42. var hot = handsontable({
  43. persistentState: false
  44. });
  45. // We have to manually save data, as persistentStateSave won't work when the plugin is disabled
  46. window.localStorage[id + '_testData'] = JSON.stringify(100);
  47. var storedData = {};
  48. hot.runHooks('persistentStateLoad', 'testData', storedData);
  49. expect(storedData.value).toBeUndefined();
  50. });
  51. it('should clear the data under the given key, when persistentStateReset is run', function () {
  52. var hot = handsontable({
  53. persistentState: true
  54. });
  55. hot.runHooks('persistentStateSave', 'testData', 100);
  56. var storedData = {};
  57. hot.runHooks('persistentStateLoad', 'testData', storedData);
  58. expect(storedData.value).toEqual(100);
  59. hot.runHooks('persistentStateReset', 'testData');
  60. storedData = {};
  61. hot.runHooks('persistentStateLoad', 'testData', storedData);
  62. expect(storedData.value).toBeUndefined();
  63. });
  64. it('should NOT clear the data under the given key, when persistentStateReset is run', function () {
  65. var hot = handsontable({
  66. persistentState: false
  67. });
  68. // We have to manually save data, as persistentStateSave won't work when the plugin is disabled
  69. window.localStorage[id + '_testData'] = JSON.stringify(100);
  70. var storedData = {};
  71. hot.runHooks('persistentStateReset', 'testData');
  72. expect(JSON.parse(window.localStorage[id + '_testData'])).toEqual(100);
  73. });
  74. it('should clear all data, when persistentStateReset is run without specifying a key to reset', function () {
  75. var hot = handsontable({
  76. persistentState: true
  77. });
  78. hot.runHooks('persistentStateSave', 'testData0', 100);
  79. hot.runHooks('persistentStateSave', 'testData1', 'foo');
  80. hot.runHooks('persistentStateSave', 'testData2', 200);
  81. var storedData = [{}, {}, {}];
  82. hot.runHooks('persistentStateLoad', 'testData0', storedData[0]);
  83. hot.runHooks('persistentStateLoad', 'testData1', storedData[1]);
  84. hot.runHooks('persistentStateLoad', 'testData2', storedData[2]);
  85. expect(storedData[0].value).toEqual(100);
  86. expect(storedData[1].value).toEqual('foo');
  87. expect(storedData[2].value).toEqual(200);
  88. hot.runHooks('persistentStateReset');
  89. storedData = [{}, {}, {}];
  90. hot.runHooks('persistentStateLoad', 'testData0', storedData[0]);
  91. hot.runHooks('persistentStateLoad', 'testData1', storedData[1]);
  92. hot.runHooks('persistentStateLoad', 'testData2', storedData[2]);
  93. expect(storedData[0].value).toBeUndefined();
  94. expect(storedData[1].value).toBeUndefined();
  95. expect(storedData[2].value).toBeUndefined();
  96. });
  97. it('should allow to DISABLE plugin with updateSettings', function () {
  98. var hot = handsontable({
  99. persistentState: true
  100. });
  101. hot.runHooks('persistentStateSave', 'testData', 100);
  102. var storedData = {};
  103. hot.runHooks('persistentStateLoad', 'testData', storedData);
  104. expect(storedData.value).toEqual(100);
  105. updateSettings({
  106. persistentState: false
  107. });
  108. storedData = {};
  109. hot.runHooks('persistentStateLoad', 'testData', storedData);
  110. expect(storedData.value).toBeUndefined();
  111. });
  112. it('should allow to ENABLE plugin with updateSettings', function () {
  113. var hot = handsontable({
  114. persistentState: false
  115. });
  116. hot.runHooks('persistentStateSave', 'testData', 100);
  117. var storedData = {};
  118. hot.runHooks('persistentStateLoad', 'testData', storedData);
  119. expect(storedData.value).toBeUndefined();
  120. updateSettings({
  121. persistentState: true
  122. });
  123. hot.runHooks('persistentStateSave', 'testData', 100);
  124. storedData = {};
  125. hot.runHooks('persistentStateLoad', 'testData', storedData);
  126. expect(storedData.value).toEqual(100);
  127. });
  128. });