From 367243923532455cd4d939f92fecfee199edb965 Mon Sep 17 00:00:00 2001 From: dwithana Date: Mon, 30 Sep 2024 17:09:58 -0400 Subject: [PATCH] Fix skipped tests for useLocalStorage --- src/services/local-storage.test.js | 48 ++++++++++++++++++------------ 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/src/services/local-storage.test.js b/src/services/local-storage.test.js index 0a504bca..d740ffdb 100644 --- a/src/services/local-storage.test.js +++ b/src/services/local-storage.test.js @@ -1,27 +1,37 @@ -import * as util from './utility-helpers'; -import { useLocalStorage } from '@Services/local-storage'; -import * as React from 'react'; -import { render } from '@testing-library/react'; +import { renderHook, act } from '@testing-library/react'; +import { useLocalStorage } from './local-storage'; -describe.skip('local storage', () => { - describe('useLocalStorage', () => { - test('default value', () => { - let settingRef = React.createRef(); +describe('useLocalStorage', () => { + beforeEach(() => { + localStorage.clear(); + }); - function TestComponent() { - const [setting, setSetting] = useLocalStorage('setting', {}); + test('initializes with default value', () => { + const { result } = renderHook(() => useLocalStorage('key', 'defaultValue')); + const [value] = result.current; + expect(value).toBe('defaultValue'); + }); - React.useEffect(() => { - settingRef.currrent = setting; - }); + test('initializes with the value in localStorage if it exists', () => { + // Setup: set value in localStorage => existing value + localStorage.setItem('key', JSON.stringify('storedValue')); + const { result } = renderHook(() => useLocalStorage('key', 'defaultValue')); + const [value] = result.current; + expect(value).toBe('storedValue'); + }); - return null; - } - render(); + test('updates localStorage when value is changed', () => { + const { result } = renderHook(() => useLocalStorage('key', 'defaultValue')); + const [defValue] = result.current; + expect(defValue).toBe('defaultValue'); - expect(settingRef.current).toEqual({}); - setSetting({'key': 'value'}) - expect(setting).toEqual({'key': 'value'}); + // Update value + act(() => { + const [, setValue] = result.current; + setValue('newValue'); }); + const [newValue] = result.current; + expect(newValue).toBe('newValue'); + expect(localStorage.getItem('key')).toBe(JSON.stringify('newValue')); }); });