import React from 'react' import { Button, Text } from 'react-native' import { act, fireEvent, render, renderHook, screen, cleanup, waitFor, } from '@testing-library/react-native' import { createMMKV, useMMKVNumber, useMMKVString } from '..' const mmkv = createMMKV() beforeEach(() => { mmkv.clearAll() mmkv.trim() }) afterEach(() => { cleanup() }) test('hooks update when the value is changed directly through the instance', () => { const { result } = renderHook(() => useMMKVString('string-key', mmkv)) expect(result.current[0]).toBeUndefined() // First, make a "normal" change act(() => { result.current[1]('value 1') }) expect(result.current[0]).toStrictEqual('value 1') // Now, make the change directly through the instance. act(() => { mmkv.set('string-key', 'value 2') }) expect(result.current[0]).toStrictEqual('value 2') }) test('functional updates to hooks', () => { const Component: React.FC = () => { const [state, setState] = React.useState(0) const [value, setValue] = useMMKVNumber('number-key', mmkv) return ( <>