diff --git a/README.md b/README.md index e873fedb..736353db 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ The main feature which distinguishes this idea from a basic apartment market pla How to use : -We strongly suggest you use an emulator with the google-apis (not the google playstore), with API level 29. This is what we have on cirrus, and some tests are built around this. +We strongly suggest you use an emulator with the google-apis (not the google playstore), with API level 29. This is what we have on cirrus, and some tests are built around this. Indeed, the StepCounterActivityTest only works on API 29. This app doesn't need any particular installation to run. However, if you want to be able to run the LoginTest and the DatabaseTest java classes, you will need the firebase emulators. diff --git a/app/src/androidTest/java/ch/epfl/sdp/appart/AdCreationUITest.java b/app/src/androidTest/java/ch/epfl/sdp/appart/AdCreationUITest.java index e81e2065..a906f615 100644 --- a/app/src/androidTest/java/ch/epfl/sdp/appart/AdCreationUITest.java +++ b/app/src/androidTest/java/ch/epfl/sdp/appart/AdCreationUITest.java @@ -69,7 +69,7 @@ public class AdCreationUITest { /* Used to grant camera permission always */ @Rule public GrantPermissionRule mRuntimePermissionRule = - GrantPermissionRule.grant(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION); + GrantPermissionRule.grant(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE); @BindValue diff --git a/app/src/androidTest/java/ch/epfl/sdp/appart/CameraUITest.java b/app/src/androidTest/java/ch/epfl/sdp/appart/CameraUITest.java deleted file mode 100644 index 283a21ab..00000000 --- a/app/src/androidTest/java/ch/epfl/sdp/appart/CameraUITest.java +++ /dev/null @@ -1,155 +0,0 @@ -package ch.epfl.sdp.appart; - -import android.view.View; - -import androidx.test.espresso.PerformException; -import androidx.test.espresso.UiController; -import androidx.test.espresso.ViewAction; -import androidx.test.espresso.intent.Intents; -import androidx.test.espresso.util.HumanReadables; -import androidx.test.espresso.util.TreeIterables; -import androidx.test.ext.junit.rules.ActivityScenarioRule; - -import org.hamcrest.Matcher; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; - -import java.util.concurrent.TimeoutException; - -import ch.epfl.sdp.appart.database.DatabaseService; -import ch.epfl.sdp.appart.database.MockDatabaseService; -import ch.epfl.sdp.appart.hilt.DatabaseModule; -import dagger.hilt.android.testing.BindValue; -import dagger.hilt.android.testing.HiltAndroidRule; -import dagger.hilt.android.testing.HiltAndroidTest; -import dagger.hilt.android.testing.UninstallModules; - -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.action.ViewActions.click; -import static androidx.test.espresso.action.ViewActions.closeSoftKeyboard; -import static androidx.test.espresso.action.ViewActions.scrollTo; -import static androidx.test.espresso.matcher.ViewMatchers.isRoot; -import static androidx.test.espresso.matcher.ViewMatchers.withId; - -@HiltAndroidTest -@UninstallModules(DatabaseModule.class) -public class CameraUITest { - - @Rule(order = 0) - public final HiltAndroidRule hiltRule = new HiltAndroidRule(this); - - @Rule(order = 1) - public ActivityScenarioRule intentsRule = new ActivityScenarioRule<>(CameraActivity.class); - - @BindValue - DatabaseService db = new MockDatabaseService(); - - @Before - public void init() { - hiltRule.inject(); - Intents.init(); - } - - @Test - public void clickOnCameraBtn() { - //onView(isRoot()).perform(waitId(R.id.gallery_Camera_button, 5000)); - //onView(withId(R.id.camera_Camera_button)).perform(closeSoftKeyboard()).perform(click()); - /*onView(withId(R.id.camera_Camera_button)).check(matches(allOf( isEnabled(), isClickable()))).perform( - new ViewAction() { - @Override - public Matcher getConstraints() { - return ViewMatchers.isEnabled(); // no constraints, they are checked above - } - - @Override - public String getDescription() { - return "click camera button"; - } - - @Override - public void perform(UiController uiController, View view) { - view.performClick(); - } - } - );*/ - } - - - @Test - public void clickOnGalleryBtn() { - //onView(isRoot()).perform(waitId(R.id.gallery_Camera_button, 5000)); - //onView(withId(R.id.gallery_Camera_button)).perform(closeSoftKeyboard()).perform(click()); - /*onView(withId(R.id.camera_Camera_button)).check(matches(allOf( isEnabled(), isClickable()))).perform( - new ViewAction() { - @Override - public Matcher getConstraints() { - return ViewMatchers.isEnabled(); // no constraints, they are checked above - } - @Override - public String getDescription() { - return "click gallery button"; - } - @Override - public void perform(UiController uiController, View view) { - view.performClick(); - } - } - );*/ - } - - @After - public void release() { - Intents.release(); - } - - - /** - * From https://stackoverflow.com/questions/49796132/android-espresso-wait-for-text-to-appear - * Perform action of waiting for a specific view id. - * @param viewId The id of the view to wait for. - * @param millis The timeout of until when to wait for. - */ - public static ViewAction waitId(final int viewId, final long millis) { - return new ViewAction() { - @Override - public Matcher getConstraints() { - return isRoot(); - } - - @Override - public String getDescription() { - return "wait for a specific view with id <" + viewId + "> during " + millis + " millis."; - } - - @Override - public void perform(final UiController uiController, final View view) { - uiController.loopMainThreadUntilIdle(); - final long startTime = System.currentTimeMillis(); - final long endTime = startTime + millis; - final Matcher viewMatcher = withId(viewId); - - do { - for (View child : TreeIterables.breadthFirstViewTraversal(view)) { - // found view with required ID - if (viewMatcher.matches(child)) { - return; - } - } - - uiController.loopMainThreadForAtLeast(50); - } - while (System.currentTimeMillis() < endTime); - - // timeout happens - throw new PerformException.Builder() - .withActionDescription(this.getDescription()) - .withViewDescription(HumanReadables.describe(view)) - .withCause(new TimeoutException()) - .build(); - } - }; - } - -} diff --git a/app/src/androidTest/java/ch/epfl/sdp/appart/MapUITest.java b/app/src/androidTest/java/ch/epfl/sdp/appart/MapUITest.java index 520c526a..21273b79 100644 --- a/app/src/androidTest/java/ch/epfl/sdp/appart/MapUITest.java +++ b/app/src/androidTest/java/ch/epfl/sdp/appart/MapUITest.java @@ -59,14 +59,14 @@ @HiltAndroidTest public class MapUITest { - @Rule(order = 0) + @Rule(order = 1) public HiltAndroidRule hiltRule = new HiltAndroidRule(this); - @Rule(order = 1) + @Rule(order = 2) public ActivityScenarioRule mapActivityRule = new ActivityScenarioRule<>(MapActivity.class); - @Rule(order = 2) + @Rule(order = 0) public GrantPermissionRule mRuntimePermissionRule = GrantPermissionRule.grant(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.INTERNET); @@ -97,7 +97,7 @@ public void markerTest() throws InterruptedException { UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); - boolean foundMap = device.wait(Until.hasObject(By.desc("MAP READY")), + boolean foundMap = device.wait(Until.hasObject(By.descContains("MAP READY")), 10000); assertThat(foundMap, is(true)); diff --git a/app/src/androidTest/java/ch/epfl/sdp/appart/MapUIWithAddressFailsTest.java b/app/src/androidTest/java/ch/epfl/sdp/appart/MapUIWithAddressFailsTest.java index c111979e..749cc32e 100644 --- a/app/src/androidTest/java/ch/epfl/sdp/appart/MapUIWithAddressFailsTest.java +++ b/app/src/androidTest/java/ch/epfl/sdp/appart/MapUIWithAddressFailsTest.java @@ -50,14 +50,14 @@ public class MapUIWithAddressFailsTest { intent.putExtra(InstrumentationRegistry.getInstrumentation().getTargetContext().getString(R.string.intentLocationForMap), intentExtra); } - @Rule(order = 0) + @Rule(order = 1) public HiltAndroidRule hiltRule = new HiltAndroidRule(this); - @Rule(order = 1) + @Rule(order = 2) public ActivityScenarioRule mapActivityRule = new ActivityScenarioRule<>(intent); - @Rule(order = 2) + @Rule(order = 0) public GrantPermissionRule mRuntimePermissionRule = GrantPermissionRule.grant(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.INTERNET); diff --git a/app/src/androidTest/java/ch/epfl/sdp/appart/MapUIWithAddressTest.java b/app/src/androidTest/java/ch/epfl/sdp/appart/MapUIWithAddressTest.java index 7eb70973..f2c529f0 100644 --- a/app/src/androidTest/java/ch/epfl/sdp/appart/MapUIWithAddressTest.java +++ b/app/src/androidTest/java/ch/epfl/sdp/appart/MapUIWithAddressTest.java @@ -52,14 +52,14 @@ public class MapUIWithAddressTest { intent.putExtra(InstrumentationRegistry.getInstrumentation().getTargetContext().getString(R.string.intentLocationForMap), intentExtra); } - @Rule(order = 0) + @Rule(order = 1) public HiltAndroidRule hiltRule = new HiltAndroidRule(this); - @Rule(order = 1) + @Rule(order = 2) public ActivityScenarioRule mapActivityRule = new ActivityScenarioRule<>(intent); - @Rule(order = 2) + @Rule(order = 0) public GrantPermissionRule mRuntimePermissionRule = GrantPermissionRule.grant(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.INTERNET); diff --git a/app/src/androidTest/java/ch/epfl/sdp/appart/StepCounterActivityTest.java b/app/src/androidTest/java/ch/epfl/sdp/appart/StepCounterActivityTest.java index 2b15799b..9ec87b83 100644 --- a/app/src/androidTest/java/ch/epfl/sdp/appart/StepCounterActivityTest.java +++ b/app/src/androidTest/java/ch/epfl/sdp/appart/StepCounterActivityTest.java @@ -58,9 +58,9 @@ public class StepCounterActivityTest { DatabaseService db = new MockDatabaseService(); /* Used to grant permission always */ - @Rule + /*@Rule public GrantPermissionRule mRuntimePermissionRule = - GrantPermissionRule.grant(Manifest.permission.ACTIVITY_RECOGNITION); + GrantPermissionRule.grant(Manifest.permission.ACTIVITY_RECOGNITION);*/ @Test public void stepCounterActivityTest() { diff --git a/app/src/androidTest/java/ch/epfl/sdp/appart/userui/UserProfileActivityTest.java b/app/src/androidTest/java/ch/epfl/sdp/appart/userui/UserProfileActivityTest.java index 0cd3229c..66dd49ff 100644 --- a/app/src/androidTest/java/ch/epfl/sdp/appart/userui/UserProfileActivityTest.java +++ b/app/src/androidTest/java/ch/epfl/sdp/appart/userui/UserProfileActivityTest.java @@ -99,7 +99,7 @@ public class UserProfileActivityTest { /* Used to grant camera permission always */ @Rule public GrantPermissionRule mRuntimePermissionRule = - GrantPermissionRule.grant(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION); + GrantPermissionRule.grant(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE); @BindValue DatabaseService database = new MockDatabaseService(); diff --git a/app/src/androidTest/java/ch/epfl/sdp/appart/userui/UserProfileExceptionallyTest.java b/app/src/androidTest/java/ch/epfl/sdp/appart/userui/UserProfileExceptionallyTest.java index d0ce566c..92994f5f 100644 --- a/app/src/androidTest/java/ch/epfl/sdp/appart/userui/UserProfileExceptionallyTest.java +++ b/app/src/androidTest/java/ch/epfl/sdp/appart/userui/UserProfileExceptionallyTest.java @@ -53,8 +53,7 @@ public class UserProfileExceptionallyTest { /* Used to grant camera permission always */ @Rule public GrantPermissionRule mRuntimePermissionRule = - GrantPermissionRule.grant(Manifest.permission.ACCESS_FINE_LOCATION, - Manifest.permission.ACCESS_COARSE_LOCATION); + GrantPermissionRule.grant(); @BindValue DatabaseService database = new MockDatabaseService();