Files

45 lines
1.2 KiB
TypeScript

jest.mock('@react-native-async-storage/async-storage', () => {
const storage = new Map<string, string>();
return {
__esModule: true,
default: {
getItem: jest.fn((key: string) => Promise.resolve(storage.get(key) ?? null)),
removeItem: jest.fn((key: string) => {
storage.delete(key);
return Promise.resolve();
}),
setItem: jest.fn((key: string, value: string) => {
storage.set(key, value);
return Promise.resolve();
}),
},
};
});
import { createPersistOptions } from '../src/state/createPersistOptions';
type TestState = {
hydrated: boolean;
transientValue: string;
};
describe('createPersistOptions', () => {
it('creates named options with JSON storage and preserves extra options', () => {
const options = createPersistOptions<TestState, Pick<TestState, 'hydrated'>>({
name: 'test-state',
partialize: state => ({ hydrated: state.hydrated }),
version: 2,
});
expect(options.name).toBe('test-state');
expect(options.version).toBe(2);
expect(options.storage).toBeDefined();
expect(options.partialize?.({ hydrated: true, transientValue: 'skip' })).toEqual(
{
hydrated: true,
},
);
});
});