persistentState.e2e.js 5.1 KB

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