fix(fixed faiing test (settingsStorage tests))

Co-authored-by: Sebastian Palmqvist <PalmN72@users.noreply.github.com>
This commit is contained in:
Lee 2023-10-16 10:10:28 +02:00
parent 39d5e64078
commit 6c794872f5
2 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,55 @@
import AsyncStorage from '@react-native-async-storage/async-storage';
import {act, renderHook} from '@testing-library/react';
import AppStorage from '../../services/appStorage';
import useSettingsStorage, {settingsState} from '../useSettingsStorage';
beforeEach(() => {
AsyncStorage.clear();
// TODO: This is a bit ugly. Should probably fix that.
settingsState.settings.theme = 'light';
});
const prefix = AppStorage.settingsStorageKeyPrefix;
test('use key prefix on set', async () => {
const {result} = renderHook(() => useSettingsStorage('theme'));
await act(async () => {
const [, setValue] = result.current;
setValue('dark');
//? maybe not the best fix but it works!
// await waitForNextUpdate();
await new Promise(r => setTimeout(r, 1000));
const data = await AsyncStorage.getItem(prefix + 'SETTINGS');
const parsed = JSON.parse(data ?? '');
expect(parsed.theme).toEqual('dark');
});
});
test('update value', async () => {
let data;
let parsed;
const {result} = renderHook(() => useSettingsStorage('theme'));
const [initValue, setValue] = result.current;
await act(async () => {
expect(settingsState.settings.theme).toEqual('light');
setValue('dark');
await new Promise(r => setTimeout(r, 1000));
// await waitForNextUpdate();
// const [updateValue] = result.current;
expect(initValue).toEqual('light');
// expect(updateValue).toEqual('dark');
data = await AsyncStorage.getItem(prefix + 'SETTINGS');
parsed = JSON.parse(data ?? '');
expect(parsed.theme).toEqual('dark');
expect(settingsState.settings.theme).toEqual('dark');
});
});

View File

@ -0,0 +1,10 @@
import useAsyncStorage from './useAsyncStorage';
import AppStorage from '../services/appStorage';
export default function useTempStorage<T>(
storageKey: string,
defaultValue: T,
): [T, (val: T) => void] {
const tempKey = AppStorage.tempStorageKeyPrefix + storageKey;
return useAsyncStorage(tempKey, defaultValue);
}