@@ -29,7 +29,7 @@ async function mockRequireAsyncStorage() {
2929 M . _load_original = M . _load ;
3030 M . _load = ( uri : string , parent : string ) => {
3131 if ( uri === '@react-native-async-storage/async-storage' ) {
32- if ( isAsyncStorageAvailable ) return { } ;
32+ if ( isAsyncStorageAvailable ) return { default : { } } ;
3333 throw new Error ( 'Module not found: @react-native-async-storage/async-storage' ) ;
3434 }
3535 return M . _load_original ( uri , parent ) ;
@@ -47,25 +47,30 @@ vi.mock('../utils/http_request_handler/browser_request_handler', () => {
4747 return { BrowserRequestHandler } ;
4848} ) ;
4949
50- vi . mock ( '../plugins/key_value_cache/reactNativeAsyncStorageCache' , ( ) => {
51- const ReactNativeAsyncStorageCache = vi . fn ( ) ;
52- return { default : ReactNativeAsyncStorageCache } ;
50+ vi . mock ( '../utils/cache/async_storage_cache.react_native' , async ( importOriginal ) => {
51+ const original : any = await importOriginal ( ) ;
52+ const OriginalAsyncStorageCache = original . AsyncStorageCache ;
53+ const MockAsyncStorageCache = vi . fn ( ) . mockImplementation ( function ( this : any , ...args ) {
54+ Object . setPrototypeOf ( this , new OriginalAsyncStorageCache ( ...args ) ) ;
55+ } ) ;
56+ return { AsyncStorageCache : MockAsyncStorageCache } ;
5357} ) ;
5458
5559import { getPollingConfigManager , PollingConfigManagerConfig } from './config_manager_factory' ;
5660import { createPollingProjectConfigManager } from './config_manager_factory.react_native' ;
5761import { BrowserRequestHandler } from '../utils/http_request_handler/browser_request_handler' ;
58- import ReactNativeAsyncStorageCache from '../plugins/key_value_cache/reactNativeAsyncStorageCache' ;
62+ import { AsyncStorageCache } from '../utils/cache/async_storage_cache.react_native' ;
63+ import { getMockSyncCache } from '../tests/mock/mock_cache' ;
5964
6065describe ( 'createPollingConfigManager' , ( ) => {
6166 const mockGetPollingConfigManager = vi . mocked ( getPollingConfigManager ) ;
6267 const MockBrowserRequestHandler = vi . mocked ( BrowserRequestHandler ) ;
63- const MockReactNativeAsyncStorageCache = vi . mocked ( ReactNativeAsyncStorageCache ) ;
68+ const MockAsyncStorageCache = vi . mocked ( AsyncStorageCache ) ;
6469
6570 beforeEach ( ( ) => {
6671 mockGetPollingConfigManager . mockClear ( ) ;
6772 MockBrowserRequestHandler . mockClear ( ) ;
68- MockReactNativeAsyncStorageCache . mockClear ( ) ;
73+ MockAsyncStorageCache . mockClear ( ) ;
6974 } ) ;
7075
7176 it ( 'creates and returns the instance by calling getPollingConfigManager' , ( ) => {
@@ -110,7 +115,7 @@ describe('createPollingConfigManager', () => {
110115 createPollingProjectConfigManager ( config ) ;
111116
112117 expect (
113- Object . is ( mockGetPollingConfigManager . mock . calls [ 0 ] [ 0 ] . cache , MockReactNativeAsyncStorageCache . mock . instances [ 0 ] )
118+ Object . is ( mockGetPollingConfigManager . mock . calls [ 0 ] [ 0 ] . cache , MockAsyncStorageCache . mock . instances [ 0 ] )
114119 ) . toBe ( true ) ;
115120 } ) ;
116121
@@ -123,7 +128,7 @@ describe('createPollingConfigManager', () => {
123128 autoUpdate : false ,
124129 urlTemplate : 'urlTemplate' ,
125130 datafileAccessToken : 'datafileAccessToken' ,
126- cache : { get : vi . fn ( ) , set : vi . fn ( ) , contains : vi . fn ( ) , remove : vi . fn ( ) } ,
131+ cache : getMockSyncCache ( ) ,
127132 } ;
128133
129134 createPollingProjectConfigManager ( config ) ;
@@ -133,38 +138,24 @@ describe('createPollingConfigManager', () => {
133138
134139 it ( 'Should not throw error if a cache is present in the config, and async storage is not available' , async ( ) => {
135140 isAsyncStorageAvailable = false ;
136- const { default : ReactNativeAsyncStorageCache } = await vi . importActual <
137- typeof import ( '../plugins/key_value_cache/reactNativeAsyncStorageCache' )
138- > ( '../plugins/key_value_cache/reactNativeAsyncStorageCache' ) ;
139141 const config = {
140142 sdkKey : 'sdkKey' ,
141143 requestHandler : { makeRequest : vi . fn ( ) } ,
142- cache : { get : vi . fn ( ) , set : vi . fn ( ) , contains : vi . fn ( ) , remove : vi . fn ( ) } ,
144+ cache : getMockSyncCache < string > ( ) ,
143145 } ;
144146
145- MockReactNativeAsyncStorageCache . mockImplementationOnce ( ( ) => {
146- return new ReactNativeAsyncStorageCache ( ) ;
147- } ) ;
148-
149147 expect ( ( ) => createPollingProjectConfigManager ( config ) ) . not . toThrow ( ) ;
150148 isAsyncStorageAvailable = true ;
151149 } ) ;
152150
153151 it ( 'should throw an error if cache is not present in the config, and async storage is not available' , async ( ) => {
154152 isAsyncStorageAvailable = false ;
155153
156- const { default : ReactNativeAsyncStorageCache } = await vi . importActual <
157- typeof import ( '../plugins/key_value_cache/reactNativeAsyncStorageCache' )
158- > ( '../plugins/key_value_cache/reactNativeAsyncStorageCache' ) ;
159154 const config = {
160155 sdkKey : 'sdkKey' ,
161156 requestHandler : { makeRequest : vi . fn ( ) } ,
162157 } ;
163158
164- MockReactNativeAsyncStorageCache . mockImplementationOnce ( ( ) => {
165- return new ReactNativeAsyncStorageCache ( ) ;
166- } ) ;
167-
168159 expect ( ( ) => createPollingProjectConfigManager ( config ) ) . toThrowError (
169160 'Module not found: @react-native-async-storage/async-storage'
170161 ) ;
0 commit comments