Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
alperozturk 2024-08-19 11:25:26 +02:00 committed by Alper Öztürk
parent 35fb0a1899
commit 58d104a100

View file

@ -8,11 +8,15 @@
package com.nextcloud.client package com.nextcloud.client
import android.view.View import android.view.View
import androidx.test.espresso.Espresso import androidx.annotation.UiThread
import androidx.test.core.app.launchActivity
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.IdlingRegistry
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.contrib.DrawerActions import androidx.test.espresso.contrib.DrawerActions
import androidx.test.espresso.intent.rule.IntentsTestRule import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.isRoot
import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withId
import com.facebook.testing.screenshot.Screenshot
import com.owncloud.android.AbstractIT import com.owncloud.android.AbstractIT
import com.owncloud.android.R import com.owncloud.android.R
import com.owncloud.android.lib.resources.activities.model.Activity import com.owncloud.android.lib.resources.activities.model.Activity
@ -21,65 +25,88 @@ import com.owncloud.android.lib.resources.activities.model.RichObject
import com.owncloud.android.lib.resources.activities.models.PreviewObject import com.owncloud.android.lib.resources.activities.models.PreviewObject
import com.owncloud.android.lib.resources.status.OCCapability import com.owncloud.android.lib.resources.status.OCCapability
import com.owncloud.android.ui.activities.ActivitiesActivity import com.owncloud.android.ui.activities.ActivitiesActivity
import com.owncloud.android.utils.EspressoIdlingResource
import com.owncloud.android.utils.ScreenshotTest import com.owncloud.android.utils.ScreenshotTest
import org.junit.Rule import org.junit.After
import org.junit.Before
import org.junit.Test import org.junit.Test
import java.util.GregorianCalendar import java.util.GregorianCalendar
class ActivitiesActivityIT : AbstractIT() { class ActivitiesActivityIT : AbstractIT() {
@get:Rule private val testClassName = "com.nextcloud.client.ActivitiesActivityIT"
var activityRule = IntentsTestRule(ActivitiesActivity::class.java, true, false)
@Before
fun registerIdlingResource() {
IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource)
}
@After
fun unregisterIdlingResource() {
IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource)
}
@Test @Test
@UiThread
@ScreenshotTest @ScreenshotTest
fun openDrawer() { fun openDrawer() {
val sut = activityRule.launchActivity(null) launchActivity<ActivitiesActivity>().use { scenario ->
shortSleep() scenario.onActivity { sut ->
Espresso.onView(withId(R.id.drawer_layout)).perform(DrawerActions.open()) onIdleSync {
sut.runOnUiThread { EspressoIdlingResource.increment()
sut.dismissSnackbar() onView(withId(R.id.drawer_layout)).perform(DrawerActions.open())
} sut.dismissSnackbar()
shortSleep() EspressoIdlingResource.decrement()
waitForIdleSync() val screenShotName = createName(testClassName + "_" + "openDrawer", "")
screenshot(sut) onView(isRoot()).check(matches(isDisplayed()))
} screenshotViaName(sut, screenShotName)
}
@Test
@ScreenshotTest
fun loading() {
val sut: ActivitiesActivity = activityRule.launchActivity(null).apply {
runOnUiThread {
dismissSnackbar()
binding.emptyList.root.visibility = View.GONE
binding.swipeContainingList.visibility = View.GONE
binding.loadingContent.visibility = View.VISIBLE
} }
} }
shortSleep()
waitForIdleSync()
Screenshot.snap(sut.binding.loadingContent).record()
} }
@Test @Test
@UiThread
@ScreenshotTest
fun loading() {
launchActivity<ActivitiesActivity>().use { scenario ->
scenario.onActivity { sut ->
onIdleSync {
EspressoIdlingResource.increment()
sut.dismissSnackbar()
sut.binding.emptyList.root.visibility = View.GONE
sut.binding.swipeContainingList.visibility = View.GONE
sut.binding.loadingContent.visibility = View.VISIBLE
EspressoIdlingResource.decrement()
val screenShotName = createName(testClassName + "_" + "loading", "")
onView(isRoot()).check(matches(isDisplayed()))
screenshotViaName(sut, screenShotName)
}
}
}
}
@Test
@UiThread
@ScreenshotTest @ScreenshotTest
fun empty() { fun empty() {
val sut: ActivitiesActivity = activityRule.launchActivity(null) launchActivity<ActivitiesActivity>().use { scenario ->
scenario.onActivity { sut ->
sut.runOnUiThread { onIdleSync {
sut.showActivities(mutableListOf(), nextcloudClient, -1) EspressoIdlingResource.increment()
sut.setProgressIndicatorState(false) sut.showActivities(mutableListOf(), nextcloudClient, -1)
sut.dismissSnackbar() sut.setProgressIndicatorState(false)
sut.dismissSnackbar()
EspressoIdlingResource.decrement()
val screenShotName = createName(testClassName + "_" + "empty", "")
onView(isRoot()).check(matches(isDisplayed()))
screenshotViaName(sut, screenShotName)
}
}
} }
shortSleep()
waitForIdleSync()
screenshot(sut)
} }
@Test @Test
@UiThread
@ScreenshotTest @ScreenshotTest
@SuppressWarnings("MagicNumber") @SuppressWarnings("MagicNumber")
fun showActivities() { fun showActivities() {
@ -87,8 +114,6 @@ class ActivitiesActivityIT : AbstractIT() {
capability.versionMayor = 20 capability.versionMayor = 20
fileDataStorageManager.saveCapabilities(capability) fileDataStorageManager.saveCapabilities(capability)
val sut: ActivitiesActivity = activityRule.launchActivity(null)
val date = GregorianCalendar() val date = GregorianCalendar()
date.set(2005, 4, 17, 10, 35, 30) // random date date.set(2005, 4, 17, 10, 35, 30) // random date
@ -136,7 +161,7 @@ class ActivitiesActivityIT : AbstractIT() {
"calendar", "calendar",
"35", "35",
"", "",
ArrayList<PreviewObject>(), ArrayList(),
RichElement() RichElement()
), ),
Activity( Activity(
@ -159,35 +184,39 @@ class ActivitiesActivityIT : AbstractIT() {
) )
) )
sut.runOnUiThread { launchActivity<ActivitiesActivity>().use { scenario ->
sut.showActivities(activities as List<Any>?, nextcloudClient, -1) scenario.onActivity { sut ->
sut.setProgressIndicatorState(false) onIdleSync {
sut.dismissSnackbar() EspressoIdlingResource.increment()
sut.showActivities(activities as List<Any>?, nextcloudClient, -1)
sut.setProgressIndicatorState(false)
sut.dismissSnackbar()
EspressoIdlingResource.decrement()
val screenShotName = createName(testClassName + "_" + "showActivities", "")
onView(isRoot()).check(matches(isDisplayed()))
screenshotViaName(sut, screenShotName)
}
}
} }
longSleep()
waitForIdleSync()
screenshot(sut)
} }
@Test @Test
@UiThread
@ScreenshotTest @ScreenshotTest
fun error() { fun error() {
val sut: ActivitiesActivity = activityRule.launchActivity(null) launchActivity<ActivitiesActivity>().use { scenario ->
scenario.onActivity { sut ->
shortSleep() onIdleSync {
EspressoIdlingResource.increment()
sut.runOnUiThread { sut.showEmptyContent("Error", "Error! Please try again later!")
sut.showEmptyContent("Error", "Error! Please try again later!") sut.setProgressIndicatorState(false)
sut.setProgressIndicatorState(false) sut.dismissSnackbar()
sut.dismissSnackbar() EspressoIdlingResource.decrement()
val screenShotName = createName(testClassName + "_" + "error", "")
onView(isRoot()).check(matches(isDisplayed()))
screenshotViaName(sut, screenShotName)
}
}
} }
shortSleep()
shortSleep()
waitForIdleSync()
screenshot(sut)
} }
} }