aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils/hooks/use-local-storage/use-local-storage.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/hooks/use-local-storage/use-local-storage.test.ts')
-rw-r--r--src/utils/hooks/use-local-storage/use-local-storage.test.ts59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/utils/hooks/use-local-storage/use-local-storage.test.ts b/src/utils/hooks/use-local-storage/use-local-storage.test.ts
new file mode 100644
index 0000000..3b63495
--- /dev/null
+++ b/src/utils/hooks/use-local-storage/use-local-storage.test.ts
@@ -0,0 +1,59 @@
+import { describe, expect, it } from '@jest/globals';
+import { act, renderHook } from '@testing-library/react';
+import { LocalStorage } from '../../../services/local-storage';
+import { useLocalStorage } from './use-local-storage';
+
+const validator = (value: unknown): value is string =>
+ typeof value === 'string';
+
+describe('useLocalStorage', () => {
+ const fallback = 'fuga';
+ const key = 'qui';
+
+ it('should return the fallback value when storage is clear', () => {
+ LocalStorage.clear();
+
+ const { result } = renderHook(() =>
+ useLocalStorage(key, fallback, validator)
+ );
+
+ expect(result.current[0]).toBe(fallback);
+ });
+
+ it('should return the stored value when storage is not clear', () => {
+ const storedValue = 'unde';
+
+ LocalStorage.set(key, storedValue);
+
+ const { result } = renderHook(() =>
+ useLocalStorage(key, fallback, validator)
+ );
+
+ expect(result.current[0]).toBe(storedValue);
+ });
+
+ it('should return the fallback value when the stored value is invalid', () => {
+ LocalStorage.clear();
+
+ const storedValue = 42;
+
+ LocalStorage.set(key, storedValue);
+
+ const { result } = renderHook(() =>
+ useLocalStorage(key, fallback, validator)
+ );
+
+ expect(result.current[0]).toBe(fallback);
+ });
+
+ it('can update the stored value', () => {
+ const { result } = renderHook(() =>
+ useLocalStorage(key, fallback, validator)
+ );
+ const newValue = 'eveniet';
+
+ act(() => result.current[1](newValue));
+
+ expect(result.current[0]).toBe(newValue);
+ });
+});