localstorage-manager.test.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // eslint-disable-next-line import/no-unresolved
  2. import 'jest-localstorage-mock';
  3. import { LocalStorageManager } from '~/service/localstorage-manager';
  4. let localStorageManager = null;
  5. beforeEach(() => {
  6. localStorageManager = LocalStorageManager.getInstance();
  7. // == init jest-localstorage-mock
  8. // reset the storage
  9. localStorage.clear();
  10. sessionStorage.clear();
  11. // set preset data
  12. sessionStorage.setItem('localstorage-manager-test', JSON.stringify({ foo: 'bar' }));
  13. // reset mocks
  14. localStorage.setItem.mockClear();
  15. sessionStorage.setItem.mockClear();
  16. });
  17. describe('LocalStorageManager', () => {
  18. test('.getInstance() returns the same instance', () => {
  19. expect(LocalStorageManager.getInstance()).toBe(localStorageManager);
  20. });
  21. test('.retrieveFromSessionStorage() with unknown namespace returns the empty object', () => {
  22. const item = localStorageManager.retrieveFromSessionStorage('unknown namespace');
  23. expect(item).toEqual({});
  24. });
  25. test('.retrieveFromSessionStorage() without key returns the preset data', () => {
  26. const item = localStorageManager.retrieveFromSessionStorage('localstorage-manager-test');
  27. expect(item).toEqual({ foo: 'bar' });
  28. });
  29. test('.retrieveFromSessionStorage() with key returns the preset data', () => {
  30. const item = localStorageManager.retrieveFromSessionStorage('localstorage-manager-test', 'foo');
  31. expect(item).toBe('bar');
  32. });
  33. test('.saveToSessionStorage() without key works fine', () => {
  34. localStorageManager.saveToSessionStorage(
  35. 'localstorage-manager-test',
  36. { foo: { qux: 'quux' } },
  37. );
  38. expect(sessionStorage.__STORE__.length).toBe(1);
  39. expect(sessionStorage.setItem)
  40. .toHaveBeenLastCalledWith(
  41. 'localstorage-manager-test',
  42. JSON.stringify({ foo: { qux: 'quux' } }),
  43. );
  44. });
  45. test('.saveToSessionStorage() with key works fine', () => {
  46. localStorageManager.saveToSessionStorage(
  47. 'localstorage-manager-test',
  48. 'baz',
  49. { qux: 'quux' },
  50. );
  51. expect(sessionStorage.__STORE__.length).toBe(1);
  52. expect(sessionStorage.setItem)
  53. .toHaveBeenLastCalledWith(
  54. 'localstorage-manager-test',
  55. JSON.stringify({ foo: 'bar', baz: { qux: 'quux' } }),
  56. );
  57. });
  58. test('.saveToSessionStorage() with unknown key works fine', () => {
  59. localStorageManager.saveToSessionStorage(
  60. 'localstorage-manager-test-unknown-key',
  61. 'baz',
  62. { qux: 'quux' },
  63. );
  64. expect(sessionStorage.__STORE__.length).toBe(2);
  65. expect(sessionStorage.setItem)
  66. .toHaveBeenLastCalledWith(
  67. 'localstorage-manager-test-unknown-key',
  68. JSON.stringify({ baz: { qux: 'quux' } }),
  69. );
  70. });
  71. });