import * as EmbeddedAssets from '../EmbeddedAssets'; jest.mock('expo-constants', () => { const Constants = require.requireActual('expo-constants'); return { ...Constants, appOwnership: 'standalone', }; }); jest.mock('expo-file-system', () => { const FileSystem = require.requireActual('expo-file-system'); return { ...FileSystem, bundleDirectory: 'file:///Containers/Bundle/Application/00A4A2F0-E268-40DC-A1AD-2F3A90BA2340/Expo.app/', bundledAssets: ['asset_test1', 'asset_test2.png'], }; }); describe('getEmbeddedAssetUri', () => { it(`returns null in __DEV__`, () => { let uri = EmbeddedAssets.getEmbeddedAssetUri('hash', 'png'); expect(__DEV__).toBeTruthy(); expect(uri).toBeNull(); }); describe('production', () => { beforeAll(() => { // @ts-ignore: the type declaration marks __DEV__ as read-only __DEV__ = false; }); afterAll(() => { // @ts-ignore: the type declaration marks __DEV__ as read-only __DEV__ = true; }); it(`returns a URI when an asset is bundled`, () => { let uri = EmbeddedAssets.getEmbeddedAssetUri('test1', null); expect(uri).toBe( 'file:///Containers/Bundle/Application/00A4A2F0-E268-40DC-A1AD-2F3A90BA2340/Expo.app/asset_test1' ); }); it(`returns a URI for an asset with the given hash and file extension`, () => { let uri = EmbeddedAssets.getEmbeddedAssetUri('test2', 'png'); expect(uri).toBe( 'file:///Containers/Bundle/Application/00A4A2F0-E268-40DC-A1AD-2F3A90BA2340/Expo.app/asset_test2.png' ); }); it(`returns null when no asset exists with the given hash and file extension`, () => { let uri1 = EmbeddedAssets.getEmbeddedAssetUri('test1', 'png'); expect(uri1).toBeNull(); let uri2 = EmbeddedAssets.getEmbeddedAssetUri('test2', 'xxx'); expect(uri2).toBeNull(); }); }); });