import { vol } from 'memfs';
import {
getMainActivityAsync,
getProjectBuildGradleAsync,
getResourceXMLPathAsync,
} from '../Paths';
jest.mock('fs');
describe(getMainActivityAsync, () => {
beforeAll(async () => {
vol.fromJSON(
{
'./android/app/src/main/java/com/bacon/app/MainActivity.java': '...',
},
'/app'
);
vol.fromJSON(
{
'./android/app/src/main/java/com/bacon/app/MainActivity.kt': '...',
},
'/kt'
);
});
afterAll(async () => {
vol.reset();
});
it(`gets a java project`, async () => {
const mainActivity = await getMainActivityAsync('/app');
expect(mainActivity.path).toBe(
'/app/android/app/src/main/java/com/bacon/app/MainActivity.java'
);
expect(mainActivity.language).toBe('java');
expect(mainActivity.contents).toBe('...');
});
it(`gets a kotlin project`, async () => {
const mainActivity = await getMainActivityAsync('/kt');
expect(mainActivity.path).toBe('/kt/android/app/src/main/java/com/bacon/app/MainActivity.kt');
expect(mainActivity.language).toBe('kt');
expect(mainActivity.contents).toBe('...');
});
});
describe(getProjectBuildGradleAsync, () => {
beforeAll(async () => {
vol.fromJSON(
{
'./android/build.gradle': '...',
},
'/app'
);
vol.fromJSON(
{
'./android/build.gradle.kts': '...',
},
'/kt'
);
});
afterAll(async () => {
vol.reset();
});
it(`gets a groovy gradle`, async () => {
const file = await getProjectBuildGradleAsync('/app');
expect(file.path).toBe('/app/android/build.gradle');
expect(file.language).toBe('groovy');
expect(file.contents).toBe('...');
});
it(`gets a kotlin gradle`, async () => {
const file = await getProjectBuildGradleAsync('/kt');
expect(file.path).toBe('/kt/android/build.gradle.kts');
expect(file.language).toBe('kt');
expect(file.contents).toBe('...');
});
});
describe(getResourceXMLPathAsync, () => {
beforeAll(async () => {
vol.fromJSON(
{
'./android/app/src/main/res/values/colors.xml': '',
// './android/app/src/main/res/values-night/colors.xml': '',
},
'/app'
);
vol.fromJSON(
{
// no files -- specifically no android folder
},
'/managed'
);
});
afterAll(async () => {
vol.reset();
});
it(`gets a resource that defaults to values`, async () => {
const path = await getResourceXMLPathAsync('/app', { name: 'colors' });
expect(path).toBe('/app/android/app/src/main/res/values/colors.xml');
});
it(`gets a themed resource`, async () => {
const path = await getResourceXMLPathAsync('/app', { name: 'colors', kind: 'values-night' });
expect(path).toBe('/app/android/app/src/main/res/values-night/colors.xml');
});
it(`throws when the android folder is missing`, async () => {
await expect(getResourceXMLPathAsync('/managed', { name: 'somn' })).rejects.toThrow(
/Android project folder is missing in project/
);
});
});