1*082815dcSEvan Baconimport { vol } from 'memfs'; 2*082815dcSEvan Bacon 3*082815dcSEvan Baconimport { 4*082815dcSEvan Bacon getMainActivityAsync, 5*082815dcSEvan Bacon getProjectBuildGradleAsync, 6*082815dcSEvan Bacon getResourceXMLPathAsync, 7*082815dcSEvan Bacon} from '../Paths'; 8*082815dcSEvan Bacon 9*082815dcSEvan Baconjest.mock('fs'); 10*082815dcSEvan Bacon 11*082815dcSEvan Bacondescribe(getMainActivityAsync, () => { 12*082815dcSEvan Bacon beforeAll(async () => { 13*082815dcSEvan Bacon vol.fromJSON( 14*082815dcSEvan Bacon { 15*082815dcSEvan Bacon './android/app/src/main/java/com/bacon/app/MainActivity.java': '...', 16*082815dcSEvan Bacon }, 17*082815dcSEvan Bacon '/app' 18*082815dcSEvan Bacon ); 19*082815dcSEvan Bacon vol.fromJSON( 20*082815dcSEvan Bacon { 21*082815dcSEvan Bacon './android/app/src/main/java/com/bacon/app/MainActivity.kt': '...', 22*082815dcSEvan Bacon }, 23*082815dcSEvan Bacon '/kt' 24*082815dcSEvan Bacon ); 25*082815dcSEvan Bacon }); 26*082815dcSEvan Bacon afterAll(async () => { 27*082815dcSEvan Bacon vol.reset(); 28*082815dcSEvan Bacon }); 29*082815dcSEvan Bacon 30*082815dcSEvan Bacon it(`gets a java project`, async () => { 31*082815dcSEvan Bacon const mainActivity = await getMainActivityAsync('/app'); 32*082815dcSEvan Bacon expect(mainActivity.path).toBe( 33*082815dcSEvan Bacon '/app/android/app/src/main/java/com/bacon/app/MainActivity.java' 34*082815dcSEvan Bacon ); 35*082815dcSEvan Bacon expect(mainActivity.language).toBe('java'); 36*082815dcSEvan Bacon expect(mainActivity.contents).toBe('...'); 37*082815dcSEvan Bacon }); 38*082815dcSEvan Bacon it(`gets a kotlin project`, async () => { 39*082815dcSEvan Bacon const mainActivity = await getMainActivityAsync('/kt'); 40*082815dcSEvan Bacon expect(mainActivity.path).toBe('/kt/android/app/src/main/java/com/bacon/app/MainActivity.kt'); 41*082815dcSEvan Bacon expect(mainActivity.language).toBe('kt'); 42*082815dcSEvan Bacon expect(mainActivity.contents).toBe('...'); 43*082815dcSEvan Bacon }); 44*082815dcSEvan Bacon}); 45*082815dcSEvan Bacon 46*082815dcSEvan Bacondescribe(getProjectBuildGradleAsync, () => { 47*082815dcSEvan Bacon beforeAll(async () => { 48*082815dcSEvan Bacon vol.fromJSON( 49*082815dcSEvan Bacon { 50*082815dcSEvan Bacon './android/build.gradle': '...', 51*082815dcSEvan Bacon }, 52*082815dcSEvan Bacon '/app' 53*082815dcSEvan Bacon ); 54*082815dcSEvan Bacon vol.fromJSON( 55*082815dcSEvan Bacon { 56*082815dcSEvan Bacon './android/build.gradle.kts': '...', 57*082815dcSEvan Bacon }, 58*082815dcSEvan Bacon '/kt' 59*082815dcSEvan Bacon ); 60*082815dcSEvan Bacon }); 61*082815dcSEvan Bacon afterAll(async () => { 62*082815dcSEvan Bacon vol.reset(); 63*082815dcSEvan Bacon }); 64*082815dcSEvan Bacon 65*082815dcSEvan Bacon it(`gets a groovy gradle`, async () => { 66*082815dcSEvan Bacon const file = await getProjectBuildGradleAsync('/app'); 67*082815dcSEvan Bacon expect(file.path).toBe('/app/android/build.gradle'); 68*082815dcSEvan Bacon expect(file.language).toBe('groovy'); 69*082815dcSEvan Bacon expect(file.contents).toBe('...'); 70*082815dcSEvan Bacon }); 71*082815dcSEvan Bacon it(`gets a kotlin gradle`, async () => { 72*082815dcSEvan Bacon const file = await getProjectBuildGradleAsync('/kt'); 73*082815dcSEvan Bacon expect(file.path).toBe('/kt/android/build.gradle.kts'); 74*082815dcSEvan Bacon expect(file.language).toBe('kt'); 75*082815dcSEvan Bacon expect(file.contents).toBe('...'); 76*082815dcSEvan Bacon }); 77*082815dcSEvan Bacon}); 78*082815dcSEvan Bacon 79*082815dcSEvan Bacondescribe(getResourceXMLPathAsync, () => { 80*082815dcSEvan Bacon beforeAll(async () => { 81*082815dcSEvan Bacon vol.fromJSON( 82*082815dcSEvan Bacon { 83*082815dcSEvan Bacon './android/app/src/main/res/values/colors.xml': '<resources></resources>', 84*082815dcSEvan Bacon // './android/app/src/main/res/values-night/colors.xml': '<resources></resources>', 85*082815dcSEvan Bacon }, 86*082815dcSEvan Bacon '/app' 87*082815dcSEvan Bacon ); 88*082815dcSEvan Bacon vol.fromJSON( 89*082815dcSEvan Bacon { 90*082815dcSEvan Bacon // no files -- specifically no android folder 91*082815dcSEvan Bacon }, 92*082815dcSEvan Bacon '/managed' 93*082815dcSEvan Bacon ); 94*082815dcSEvan Bacon }); 95*082815dcSEvan Bacon afterAll(async () => { 96*082815dcSEvan Bacon vol.reset(); 97*082815dcSEvan Bacon }); 98*082815dcSEvan Bacon 99*082815dcSEvan Bacon it(`gets a resource that defaults to values`, async () => { 100*082815dcSEvan Bacon const path = await getResourceXMLPathAsync('/app', { name: 'colors' }); 101*082815dcSEvan Bacon expect(path).toBe('/app/android/app/src/main/res/values/colors.xml'); 102*082815dcSEvan Bacon }); 103*082815dcSEvan Bacon it(`gets a themed resource`, async () => { 104*082815dcSEvan Bacon const path = await getResourceXMLPathAsync('/app', { name: 'colors', kind: 'values-night' }); 105*082815dcSEvan Bacon expect(path).toBe('/app/android/app/src/main/res/values-night/colors.xml'); 106*082815dcSEvan Bacon }); 107*082815dcSEvan Bacon 108*082815dcSEvan Bacon it(`throws when the android folder is missing`, async () => { 109*082815dcSEvan Bacon await expect(getResourceXMLPathAsync('/managed', { name: 'somn' })).rejects.toThrow( 110*082815dcSEvan Bacon /Android project folder is missing in project/ 111*082815dcSEvan Bacon ); 112*082815dcSEvan Bacon }); 113*082815dcSEvan Bacon}); 114