diff options
Diffstat (limited to 'src/services/local-storage/local-storage.test.ts')
| -rw-r--r-- | src/services/local-storage/local-storage.test.ts | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/services/local-storage/local-storage.test.ts b/src/services/local-storage/local-storage.test.ts new file mode 100644 index 0000000..df3c646 --- /dev/null +++ b/src/services/local-storage/local-storage.test.ts @@ -0,0 +1,92 @@ +import { describe, expect, it, jest } from '@jest/globals'; +import { LocalStorage } from './local-storage'; + +describe('LocalStorage', () => { + it('should return an undefined value when the key is not set', () => { + localStorage.clear(); + + expect(LocalStorage.get('et')).toBeUndefined(); + }); + + it('can set a new key and return its value', () => { + localStorage.clear(); + + const key = 'laudantium'; + const value = 'laborum'; + + LocalStorage.set(key, value); + + expect(LocalStorage.get(key)).toBe(value); + }); + + it('can update an existing key', () => { + localStorage.clear(); + + const key = 'officiis'; + const value = 'saepe'; + + LocalStorage.set(key, value); + + const newValue = 'itaque'; + + LocalStorage.set(key, newValue); + + expect(LocalStorage.get(key)).toBe(newValue); + }); + + it('can remove a key from the storage', () => { + localStorage.clear(); + + const key1 = 'ab'; + const value1 = 'ipsum'; + const key2 = 'suscipit'; + const value2 = 'autem'; + + LocalStorage.set(key1, value1); + LocalStorage.set(key2, value2); + LocalStorage.remove(key1); + + expect(LocalStorage.get(key1)).toBeUndefined(); + expect(LocalStorage.get(key2)).toBe(value2); + }); + + it('can clear the storage', () => { + localStorage.clear(); + + const key1 = 'velit'; + const value1 = 'rerum'; + const key2 = 'enim'; + const value2 = 'consequatur'; + + LocalStorage.set(key1, value1); + LocalStorage.set(key2, value2); + LocalStorage.clear(); + + expect(LocalStorage.get(key1)).toBeUndefined(); + expect(LocalStorage.get(key2)).toBeUndefined(); + }); + + it('return undefined and log and error when the value is invalid', () => { + const spy = jest.spyOn(console, 'error'); + const key = 'dolor'; + const value = 'possimus'; + + // The value is not stringified + localStorage.setItem(key, value); + + expect(LocalStorage.get(key)).toBeUndefined(); + expect(spy).toHaveBeenCalled(); + }); + + it('does not set invalid value and log the error', () => { + const spy = jest.spyOn(console, 'error'); + const key = 'voluptatibus'; + // eslint-disable-next-line @typescript-eslint/no-magic-numbers + const value = BigInt(1234567890); + + LocalStorage.set(key, value); + + expect(LocalStorage.get(key)).toBeUndefined(); + expect(spy).toHaveBeenCalled(); + }); +}); |
