Skip to content
This repository was archived by the owner on Aug 8, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,9 @@ public void beforeTest() {
throw new RuntimeException("Could not start test for " + getActivityClass().getSimpleName() + ".\n"
+ "The ViewHierarchy doesn't contain a view with resource id = R.id.mapView or \n"
+ "the Activity doesn't contain an instance variable with a name equal to mapboxMap.\n"
+ "You can resolve this issue be implementing the requirements above or\n add "
+ getActivityClass().getSimpleName() + " to the excludeActivities array in `generate-test-code.js`.\n");
+ "You can resolve this issue by adding the requirements above or\n add "
+ getActivityClass().getSimpleName() + " to the platform/android/scripts/exclude-activity-gen.json to blacklist"
+ " the Activity from being generated.\n");
}
}

Expand All @@ -67,8 +68,7 @@ protected MapboxMap getMapboxMap() {
protected abstract Class getActivityClass();

protected void checkViewIsDisplayed(int id) {
onView(withId(id))
.check(matches(isDisplayed()));
onView(withId(id)).check(matches(isDisplayed()));
}

protected void waitLoop() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,15 @@ public class OnMapReadyIdlingResource implements IdlingResource, OnMapReadyCallb

private MapboxMap mapboxMap;
private IdlingResource.ResourceCallback resourceCallback;
private Activity activity;

public OnMapReadyIdlingResource(Activity activity) {
this.activity = activity;
try {
Field field = activity.getClass().getDeclaredField("mapView");
field.setAccessible(true);
((MapView) field.get(activity)).getMapAsync(this);
} catch (Exception err) {
throw new RuntimeException(err);
}

}

@Override
Expand Down Expand Up @@ -53,4 +50,4 @@ public void onMapReady(MapboxMap mapboxMap) {
resourceCallback.onTransitionToIdle();
}
}
}
}
31 changes: 31 additions & 0 deletions platform/android/scripts/exclude-activity-gen.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
[
"BaseLocationActivity",
"MapSnapshotterMarkerActivity",
"MapSnapshotterReuseActivity",
"LatLngBoundsActivity",
"BottomSheetActivity",
"MapSnapshotterActivity",
"MockLocationEngine",
"DeleteRegionActivity",
"RealTimeGeoJsonActivity",
"UpdateMetadataActivity",
"CarDrivingActivity",
"MyLocationTrackingModeActivity",
"MyLocationToggleActivity",
"MyLocationTintActivity",
"MyLocationDrawableActivity",
"DoubleMapActivity",
"LocationPickerActivity",
"GeoJsonClusteringActivity",
"RuntimeStyleTestActivity",
"AnimatedMarkerActivity",
"ViewPagerActivity",
"MapFragmentActivity",
"SupportMapFragmentActivity",
"SnapshotActivity",
"NavigationDrawerActivity",
"QueryRenderedFeaturesBoxHighlightActivity",
"MultiMapActivity",
"MapInDialogActivity",
"SimpleMapActivity"
]
23 changes: 14 additions & 9 deletions platform/android/scripts/generate-test-code.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ global.camelize = function (str) {
});
}


const excludeActivities = ["BaseLocationActivity","MapSnapshotterMarkerActivity","MapSnapshotterReuseActivity","LatLngBoundsActivity","BottomSheetActivity","MapSnapshotterActivity","","MockLocationEngine","DeleteRegionActivity","RealTimeGeoJsonActivity","UpdateMetadataActivity","CarDrivingActivity","MyLocationTrackingModeActivity","MyLocationToggleActivity","MyLocationTintActivity","MyLocationDrawableActivity","DoubleMapActivity", "LocationPickerActivity","GeoJsonClusteringActivity","RuntimeStyleTestActivity", "AnimatedMarkerActivity", "ViewPagerActivity","MapFragmentActivity","SupportMapFragmentActivity","SnapshotActivity","NavigationDrawerActivity", "QueryRenderedFeaturesBoxHighlightActivity", "MultiMapActivity", "MapInDialogActivity", "SimpleMapActivity"];
const excludeClasses = JSON.parse(fs.readFileSync('platform/android/scripts/exclude-activity-gen.json', 'utf8'));
const appBasePath = 'platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity';
const testBasePath = 'platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/activity/gen';
const subPackages = fs.readdirSync(appBasePath);
Expand All @@ -24,7 +23,9 @@ if (!fs.existsSync(testBasePath)){
fs.mkdirSync(testBasePath);
}

console.log("Generating test activities:");
console.log("\nGenerating test activities:\n");
var generatedClasses = [];
var excludedClasses = [];
for(const subPackage of subPackages) {
if(!(subPackage.slice(-5) == '.java')) {
const activities = fs.readdirSync(appBasePath+'/'+subPackage);
Expand All @@ -45,18 +46,22 @@ for(const subPackage of subPackages) {
try {
fs.accessSync(filePath, fs.F_OK);
fs.unlinkSync(filePath);
console.log("Removed file: "+filePath);
} catch (e) {
console.log("No file found: "+filePath);
}

// only generate test file if not part of exclude list
if (!(excludeActivities.indexOf(activityName) > -1)) {
console.log("Created file: "+filePath);
// only generate test file if not part of exclude list + if contains Activity in name
if ((!(excludeClasses.indexOf(activityName) > -1)) && activityName.includes("Activity")) {
fs.writeFileSync(filePath, ejsConversionTask([activityName, subPackage]));
generatedClasses.push(activityName);
}else{
console.log("Excluding file: "+filePath);
excludedClasses.push(activityName);
}
}
}
}

for(const generatedClass of generatedClasses){
console.log(generatedClass+"Test");
}

console.log("\nFinished generating " + generatedClasses.length + " activity sanity tests, excluded " + excludeClasses.length + " classes.\n");