a1a3bce668738075a39c571a5dcd26ac1304f94e65a124aeb3dfd93fc434c39a01ddebdc586235f32d8822ad219a2705279ffbe4aae244c3fade77f67882f5 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. describe('persistentState', () => {
  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', () => {
  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', () => {
  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', () => {
  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', () => {
  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', () => {
  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', () => {
  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', () => {
  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. {},
  82. {},
  83. {}
  84. ];
  85. hot.runHooks('persistentStateLoad', 'testData0', storedData[0]);
  86. hot.runHooks('persistentStateLoad', 'testData1', storedData[1]);
  87. hot.runHooks('persistentStateLoad', 'testData2', storedData[2]);
  88. expect(storedData[0].value).toEqual(100);
  89. expect(storedData[1].value).toEqual('foo');
  90. expect(storedData[2].value).toEqual(200);
  91. hot.runHooks('persistentStateReset');
  92. storedData = [
  93. {},
  94. {},
  95. {}
  96. ];
  97. hot.runHooks('persistentStateLoad', 'testData0', storedData[0]);
  98. hot.runHooks('persistentStateLoad', 'testData1', storedData[1]);
  99. hot.runHooks('persistentStateLoad', 'testData2', storedData[2]);
  100. expect(storedData[0].value).toBeUndefined();
  101. expect(storedData[1].value).toBeUndefined();
  102. expect(storedData[2].value).toBeUndefined();
  103. });
  104. it('should allow to DISABLE plugin with updateSettings', () => {
  105. var hot = handsontable({
  106. persistentState: true
  107. });
  108. hot.runHooks('persistentStateSave', 'testData', 100);
  109. var storedData = {};
  110. hot.runHooks('persistentStateLoad', 'testData', storedData);
  111. expect(storedData.value).toEqual(100);
  112. updateSettings({
  113. persistentState: false
  114. });
  115. storedData = {};
  116. hot.runHooks('persistentStateLoad', 'testData', storedData);
  117. expect(storedData.value).toBeUndefined();
  118. });
  119. it('should allow to ENABLE plugin with updateSettings', () => {
  120. var hot = handsontable({
  121. persistentState: false
  122. });
  123. hot.runHooks('persistentStateSave', 'testData', 100);
  124. var storedData = {};
  125. hot.runHooks('persistentStateLoad', 'testData', storedData);
  126. expect(storedData.value).toBeUndefined();
  127. updateSettings({
  128. persistentState: true
  129. });
  130. hot.runHooks('persistentStateSave', 'testData', 100);
  131. storedData = {};
  132. hot.runHooks('persistentStateLoad', 'testData', storedData);
  133. expect(storedData.value).toEqual(100);
  134. });
  135. });