1*13c5c8bdSEvan Baconimport { resolveProps, setStrings } from '../withAndroidUserInterfaceStyle'; 2*13c5c8bdSEvan Bacon 3*13c5c8bdSEvan Bacondescribe(resolveProps, () => { 4*13c5c8bdSEvan Bacon it(`resolves no props`, () => { 5*13c5c8bdSEvan Bacon expect(resolveProps({})).toStrictEqual({ 6*13c5c8bdSEvan Bacon userInterfaceStyle: undefined, 7*13c5c8bdSEvan Bacon }); 8*13c5c8bdSEvan Bacon }); 9*13c5c8bdSEvan Bacon 10*13c5c8bdSEvan Bacon it(`uses more specific key`, () => { 11*13c5c8bdSEvan Bacon expect( 12*13c5c8bdSEvan Bacon resolveProps({ 13*13c5c8bdSEvan Bacon userInterfaceStyle: 'dark', 14*13c5c8bdSEvan Bacon android: { 15*13c5c8bdSEvan Bacon userInterfaceStyle: 'light', 16*13c5c8bdSEvan Bacon }, 17*13c5c8bdSEvan Bacon }) 18*13c5c8bdSEvan Bacon ).toStrictEqual({ 19*13c5c8bdSEvan Bacon userInterfaceStyle: 'light', 20*13c5c8bdSEvan Bacon }); 21*13c5c8bdSEvan Bacon }); 22*13c5c8bdSEvan Bacon}); 23*13c5c8bdSEvan Bacon 24*13c5c8bdSEvan Bacondescribe(setStrings, () => { 25*13c5c8bdSEvan Bacon function getAllProps() { 26*13c5c8bdSEvan Bacon return resolveProps({ userInterfaceStyle: 'dark' }); 27*13c5c8bdSEvan Bacon } 28*13c5c8bdSEvan Bacon // TODO: Should we do validation on backgroundColor just for convenience? 29*13c5c8bdSEvan Bacon it(`asserts an invalid color`, () => { 30*13c5c8bdSEvan Bacon expect(() => 31*13c5c8bdSEvan Bacon setStrings( 32*13c5c8bdSEvan Bacon { resources: {} }, 33*13c5c8bdSEvan Bacon resolveProps({ 34*13c5c8bdSEvan Bacon // @ts-expect-error 35*13c5c8bdSEvan Bacon userInterfaceStyle: '-bacon-', 36*13c5c8bdSEvan Bacon }) 37*13c5c8bdSEvan Bacon ) 38*13c5c8bdSEvan Bacon ).toThrow(/expo-system-ui: Invalid userInterfaceStyle: "-bacon-"/); 39*13c5c8bdSEvan Bacon }); 40*13c5c8bdSEvan Bacon 41*13c5c8bdSEvan Bacon it(`sets all strings`, () => { 42*13c5c8bdSEvan Bacon expect(setStrings({ resources: {} }, getAllProps())).toStrictEqual({ 43*13c5c8bdSEvan Bacon resources: { 44*13c5c8bdSEvan Bacon string: [ 45*13c5c8bdSEvan Bacon { 46*13c5c8bdSEvan Bacon $: { 47*13c5c8bdSEvan Bacon name: 'expo_system_ui_user_interface_style', 48*13c5c8bdSEvan Bacon translatable: 'false', 49*13c5c8bdSEvan Bacon }, 50*13c5c8bdSEvan Bacon _: 'dark', 51*13c5c8bdSEvan Bacon }, 52*13c5c8bdSEvan Bacon ], 53*13c5c8bdSEvan Bacon }, 54*13c5c8bdSEvan Bacon }); 55*13c5c8bdSEvan Bacon }); 56*13c5c8bdSEvan Bacon 57*13c5c8bdSEvan Bacon it(`sets no strings`, () => { 58*13c5c8bdSEvan Bacon expect( 59*13c5c8bdSEvan Bacon setStrings( 60*13c5c8bdSEvan Bacon { 61*13c5c8bdSEvan Bacon resources: { 62*13c5c8bdSEvan Bacon string: [], 63*13c5c8bdSEvan Bacon }, 64*13c5c8bdSEvan Bacon }, 65*13c5c8bdSEvan Bacon {} 66*13c5c8bdSEvan Bacon ) 67*13c5c8bdSEvan Bacon ).toStrictEqual({ 68*13c5c8bdSEvan Bacon resources: { 69*13c5c8bdSEvan Bacon string: [], 70*13c5c8bdSEvan Bacon }, 71*13c5c8bdSEvan Bacon }); 72*13c5c8bdSEvan Bacon }); 73*13c5c8bdSEvan Bacon it(`unsets string`, () => { 74*13c5c8bdSEvan Bacon // Set all strings 75*13c5c8bdSEvan Bacon const strings = setStrings({ resources: {} }, getAllProps()); 76*13c5c8bdSEvan Bacon // Unset all strings 77*13c5c8bdSEvan Bacon expect(setStrings(strings, resolveProps({}))).toStrictEqual({ 78*13c5c8bdSEvan Bacon resources: { 79*13c5c8bdSEvan Bacon string: [], 80*13c5c8bdSEvan Bacon }, 81*13c5c8bdSEvan Bacon }); 82*13c5c8bdSEvan Bacon }); 83*13c5c8bdSEvan Bacon it(`redefines duplicates`, () => { 84*13c5c8bdSEvan Bacon // Set all strings 85*13c5c8bdSEvan Bacon const strings = setStrings({ resources: {} }, { userInterfaceStyle: 'dark' }); 86*13c5c8bdSEvan Bacon 87*13c5c8bdSEvan Bacon expect(strings.resources.string).toStrictEqual([ 88*13c5c8bdSEvan Bacon { 89*13c5c8bdSEvan Bacon $: { 90*13c5c8bdSEvan Bacon name: 'expo_system_ui_user_interface_style', 91*13c5c8bdSEvan Bacon translatable: 'false', 92*13c5c8bdSEvan Bacon }, 93*13c5c8bdSEvan Bacon // Test an initial value 94*13c5c8bdSEvan Bacon _: 'dark', 95*13c5c8bdSEvan Bacon }, 96*13c5c8bdSEvan Bacon ]); 97*13c5c8bdSEvan Bacon 98*13c5c8bdSEvan Bacon expect( 99*13c5c8bdSEvan Bacon setStrings(strings, resolveProps({ userInterfaceStyle: 'light' })).resources.string 100*13c5c8bdSEvan Bacon ).toStrictEqual([ 101*13c5c8bdSEvan Bacon { 102*13c5c8bdSEvan Bacon $: { name: 'expo_system_ui_user_interface_style', translatable: 'false' }, 103*13c5c8bdSEvan Bacon // Test a redefined value 104*13c5c8bdSEvan Bacon _: 'light', 105*13c5c8bdSEvan Bacon }, 106*13c5c8bdSEvan Bacon ]); 107*13c5c8bdSEvan Bacon }); 108*13c5c8bdSEvan Bacon}); 109