1082815dcSEvan Baconimport { ExpoConfig } from '@expo/config-types'; 2082815dcSEvan Bacon 3082815dcSEvan Baconimport { getColorsAsObject } from '../Colors'; 4082815dcSEvan Baconimport { 5082815dcSEvan Bacon getStatusBarColor, 6082815dcSEvan Bacon getStatusBarStyle, 7082815dcSEvan Bacon setStatusBarColors, 8082815dcSEvan Bacon setStatusBarStyles, 9082815dcSEvan Bacon} from '../StatusBar'; 10082815dcSEvan Baconimport { getAppThemeLightNoActionBarGroup, getStylesGroupAsObject } from '../Styles'; 11082815dcSEvan Bacon 12082815dcSEvan Baconit(`returns statusbar color if provided`, () => { 13082815dcSEvan Bacon expect(getStatusBarColor({ androidStatusBar: { backgroundColor: '#111111' } })).toMatch( 14082815dcSEvan Bacon '#111111' 15082815dcSEvan Bacon ); 16082815dcSEvan Bacon}); 17082815dcSEvan Bacon 18082815dcSEvan Baconit(`returns statusbar style if provided`, () => { 19082815dcSEvan Bacon expect(getStatusBarStyle({ androidStatusBar: { barStyle: 'dark-content' } })).toMatch( 20082815dcSEvan Bacon 'dark-content' 21082815dcSEvan Bacon ); 22082815dcSEvan Bacon}); 23082815dcSEvan Bacon 24082815dcSEvan Baconit(`default statusbar style to light-content if none provided`, () => { 25082815dcSEvan Bacon expect(getStatusBarStyle({})).toMatch('light-content'); 26082815dcSEvan Bacon}); 27082815dcSEvan Bacon 28082815dcSEvan Bacondescribe('e2e: write statusbar color and style to files correctly', () => { 29082815dcSEvan Bacon it(`sets the colorPrimaryDark item in styles.xml and adds color to colors.xml if 'androidStatusBar.backgroundColor' is given`, async () => { 30082815dcSEvan Bacon const config: ExpoConfig = { 31082815dcSEvan Bacon name: 'foo', 32082815dcSEvan Bacon slug: 'bar', 33082815dcSEvan Bacon androidStatusBar: { backgroundColor: '#654321', barStyle: 'dark-content' }, 34082815dcSEvan Bacon }; 35082815dcSEvan Bacon const styles = setStatusBarStyles(config, { resources: {} }); 36082815dcSEvan Bacon const colors = setStatusBarColors(config, { resources: {} }); 37082815dcSEvan Bacon 38*ed3bd27bSEvan Bacon const group = getStylesGroupAsObject(styles, getAppThemeLightNoActionBarGroup())!; 39082815dcSEvan Bacon expect(group.colorPrimaryDark).toBe('@color/colorPrimaryDark'); 40082815dcSEvan Bacon expect(group['android:windowLightStatusBar']).toBe('true'); 41082815dcSEvan Bacon // Ensure the version guard is added 42*ed3bd27bSEvan Bacon expect(styles.resources.style![0].item[0].$['tools:targetApi']).toBe('23'); 43*ed3bd27bSEvan Bacon expect(getColorsAsObject(colors)!.colorPrimaryDark).toBe('#654321'); 44082815dcSEvan Bacon }); 45082815dcSEvan Bacon 46082815dcSEvan Bacon it(`skips setting the status bar to translucent if no 'androidStatusBar.backgroundColor' is given`, async () => { 47082815dcSEvan Bacon const config: ExpoConfig = { 48082815dcSEvan Bacon name: 'foo', 49082815dcSEvan Bacon slug: 'bar', 50082815dcSEvan Bacon androidStatusBar: {}, 51082815dcSEvan Bacon }; 52082815dcSEvan Bacon 53082815dcSEvan Bacon const styles = setStatusBarStyles(config, { resources: {} }); 54082815dcSEvan Bacon const colors = setStatusBarColors(config, { resources: {} }); 55082815dcSEvan Bacon 56082815dcSEvan Bacon const group = getStylesGroupAsObject(styles, getAppThemeLightNoActionBarGroup()); 57082815dcSEvan Bacon 58082815dcSEvan Bacon expect(group).toStrictEqual(null); 59082815dcSEvan Bacon expect(colors.resources).toStrictEqual({}); 60082815dcSEvan Bacon }); 61082815dcSEvan Bacon}); 62