UNPKG

expo-splash-screen

Version:

Provides a module to allow keeping the native Splash Screen visible until you choose to hide it.

136 lines (126 loc) 4.95 kB
import { vol } from 'memfs'; import { getAndroidSplashConfig } from '../getAndroidSplashConfig'; import { setSplashImageDrawablesAsync } from '../withAndroidSplashImages'; jest.mock('fs'); jest.mock('@expo/image-utils', () => ({ generateImageAsync: jest.fn().mockResolvedValue({ source: Buffer.from('...') }), compositeImagesAsync: jest.fn().mockResolvedValue(Buffer.from('...')), generateImageBackgroundAsync: jest.fn().mockResolvedValue(Buffer.from('...')), })); describe(setSplashImageDrawablesAsync, () => { beforeEach(async () => { vol.fromJSON( { '/assets/splash.png': '...', '/assets/splash-dark.png': '...', }, '/' ); }); afterEach(async () => { vol.reset(); }); it(`sets all images`, async () => { await setSplashImageDrawablesAsync( getAndroidSplashConfig({ android: { resizeMode: 'contain', backgroundColor: '#ff0000', imageWidth: 100, mdpi: '/assets/splash.png', hdpi: '/assets/splash.png', xhdpi: '/assets/splash.png', xxhdpi: '/assets/splash.png', xxxhdpi: '/assets/splash.png', dark: { backgroundColor: '#ff00ff', mdpi: '/assets/splash-dark.png', hdpi: '/assets/splash-dark.png', xhdpi: '/assets/splash-dark.png', xxhdpi: '/assets/splash-dark.png', xxxhdpi: '/assets/splash-dark.png', }, }, }), '/' ); const images = [ '/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png', // Dark images '/android/app/src/main/res/drawable-night-mdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-hdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xxhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xxxhdpi/splashscreen_logo.png', ]; const results = vol.toJSON(); // expect(results).toBe({}); for (const image of images) { expect(results[image]).toBe('...'); } }); it(`sets minimal images`, async () => { await setSplashImageDrawablesAsync( getAndroidSplashConfig({ resizeMode: 'contain', backgroundColor: '#ff0000', imageWidth: 100, image: '/assets/splash.png', dark: { backgroundColor: '#ff00ff', image: '/assets/splash-dark.png', }, }), '/' ); const images = [ '/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png', // Dark logos '/android/app/src/main/res/drawable-night-mdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-hdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xxhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xxxhdpi/splashscreen_logo.png', ]; const results = vol.toJSON(); // expect(results).toBe({}); for (const image of images) { expect(results[image]).toBe('...'); } }); it(`sets no images`, async () => { await setSplashImageDrawablesAsync( getAndroidSplashConfig({ resizeMode: 'contain', backgroundColor: '#ff0000', imageWidth: 100, }), './' ); const images = [ '/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png', // Dark logos '/android/app/src/main/res/drawable-night-mdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-hdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xxhdpi/splashscreen_logo.png', '/android/app/src/main/res/drawable-night-xxxhdpi/splashscreen_logo.png', ]; const results = vol.toJSON(); for (const image of images) { expect(results[image]).not.toBeDefined(); } }); });