|
@@ -23,22 +23,31 @@ package com.nextcloud.client
|
|
|
|
|
|
import android.app.Activity
|
|
|
import androidx.test.espresso.Espresso
|
|
|
-import androidx.test.espresso.action.ViewActions
|
|
|
+import androidx.test.espresso.Espresso.onView
|
|
|
+import androidx.test.espresso.action.ViewActions.click
|
|
|
+import androidx.test.espresso.assertion.ViewAssertions.matches
|
|
|
import androidx.test.espresso.contrib.DrawerActions
|
|
|
import androidx.test.espresso.contrib.NavigationViewActions
|
|
|
+import androidx.test.espresso.contrib.RecyclerViewActions
|
|
|
import androidx.test.espresso.intent.rule.IntentsTestRule
|
|
|
import androidx.test.espresso.matcher.ViewMatchers
|
|
|
+import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
|
|
|
+import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
|
|
|
+import androidx.test.espresso.matcher.ViewMatchers.withId
|
|
|
+import androidx.test.espresso.matcher.ViewMatchers.withText
|
|
|
import androidx.test.platform.app.InstrumentationRegistry
|
|
|
import com.nextcloud.test.RetryTestRule
|
|
|
import com.owncloud.android.AbstractOnServerIT
|
|
|
import com.owncloud.android.R
|
|
|
import com.owncloud.android.lib.resources.files.CreateFolderRemoteOperation
|
|
|
import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation
|
|
|
+import com.owncloud.android.lib.resources.files.ToggleFavoriteRemoteOperation
|
|
|
import com.owncloud.android.lib.resources.shares.CreateShareRemoteOperation
|
|
|
import com.owncloud.android.lib.resources.shares.OCShare
|
|
|
import com.owncloud.android.lib.resources.shares.ShareType
|
|
|
import com.owncloud.android.operations.CreateFolderOperation
|
|
|
import com.owncloud.android.ui.activity.FileDisplayActivity
|
|
|
+import com.owncloud.android.ui.adapter.OCFileListItemViewHolder
|
|
|
import org.junit.Assert
|
|
|
import org.junit.Rule
|
|
|
import org.junit.Test
|
|
@@ -120,10 +129,10 @@ class FileDisplayActivityIT : AbstractOnServerIT() {
|
|
|
InstrumentationRegistry.getInstrumentation().waitForIdleSync()
|
|
|
|
|
|
// open drawer
|
|
|
- Espresso.onView(ViewMatchers.withId(R.id.drawer_layout)).perform(DrawerActions.open())
|
|
|
+ onView(withId(R.id.drawer_layout)).perform(DrawerActions.open())
|
|
|
|
|
|
// click "shared"
|
|
|
- Espresso.onView(ViewMatchers.withId(R.id.nav_view))
|
|
|
+ onView(withId(R.id.nav_view))
|
|
|
.perform(NavigationViewActions.navigateTo(R.id.nav_shared))
|
|
|
shortSleep()
|
|
|
shortSleep()
|
|
@@ -148,10 +157,10 @@ class FileDisplayActivityIT : AbstractOnServerIT() {
|
|
|
Assert.assertEquals(storageManager.getFileByPath("/test/"), sut.currentDir)
|
|
|
|
|
|
// open drawer
|
|
|
- Espresso.onView(ViewMatchers.withId(R.id.drawer_layout)).perform(DrawerActions.open())
|
|
|
+ onView(withId(R.id.drawer_layout)).perform(DrawerActions.open())
|
|
|
|
|
|
// click "all files"
|
|
|
- Espresso.onView(ViewMatchers.withId(R.id.nav_view))
|
|
|
+ onView(withId(R.id.nav_view))
|
|
|
.perform(NavigationViewActions.navigateTo(R.id.nav_all_files))
|
|
|
|
|
|
// then should be in root again
|
|
@@ -159,6 +168,93 @@ class FileDisplayActivityIT : AbstractOnServerIT() {
|
|
|
Assert.assertEquals(storageManager.getFileByPath("/"), sut.currentDir)
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ fun checkToolbarTitleOnNavigation() {
|
|
|
+ // Create folder structure
|
|
|
+ val topFolder = "folder1"
|
|
|
+ val childFolder = "folder2"
|
|
|
+
|
|
|
+ CreateFolderOperation("/$topFolder/", user, targetContext, storageManager)
|
|
|
+ .execute(client)
|
|
|
+
|
|
|
+ CreateFolderOperation("/$topFolder/$childFolder/", user, targetContext, storageManager)
|
|
|
+ .execute(client)
|
|
|
+
|
|
|
+ activityRule.launchActivity(null)
|
|
|
+
|
|
|
+ shortSleep()
|
|
|
+
|
|
|
+ // go into "foo"
|
|
|
+ onView(withText(topFolder)).perform(click())
|
|
|
+ shortSleep()
|
|
|
+
|
|
|
+ // check title is right
|
|
|
+ checkToolbarTitle(topFolder)
|
|
|
+
|
|
|
+ // go into "bar"
|
|
|
+ onView(withText(childFolder)).perform(click())
|
|
|
+ shortSleep()
|
|
|
+
|
|
|
+ // check title is right
|
|
|
+ checkToolbarTitle(childFolder)
|
|
|
+
|
|
|
+ // browse back up, we should be back in "foo"
|
|
|
+ Espresso.pressBack()
|
|
|
+ shortSleep()
|
|
|
+
|
|
|
+ // check title is right
|
|
|
+ checkToolbarTitle(topFolder)
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun checkToolbarTitle(childFolder: String) {
|
|
|
+ onView(withId(R.id.appbar)).check(
|
|
|
+ matches(
|
|
|
+ hasDescendant(
|
|
|
+ withText(childFolder)
|
|
|
+ )
|
|
|
+ )
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ fun browseFavoriteAndBack() {
|
|
|
+ // Create folder structure
|
|
|
+ val topFolder = "folder1"
|
|
|
+
|
|
|
+ CreateFolderOperation("/$topFolder/", user, targetContext, storageManager)
|
|
|
+ .execute(client)
|
|
|
+ ToggleFavoriteRemoteOperation(true, "/$topFolder/")
|
|
|
+ .execute(client)
|
|
|
+
|
|
|
+ val sut = activityRule.launchActivity(null)
|
|
|
+
|
|
|
+ // navigate to favorites
|
|
|
+ onView(withId(R.id.drawer_layout)).perform(DrawerActions.open())
|
|
|
+ onView(withId(R.id.nav_view))
|
|
|
+ .perform(NavigationViewActions.navigateTo(R.id.nav_favorites))
|
|
|
+ shortSleep()
|
|
|
+
|
|
|
+ // check sort button is not shown, favorites are not sortable
|
|
|
+ onView(withId(R.id.sort_button)).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)))
|
|
|
+
|
|
|
+ // browse into folder
|
|
|
+ onView(withId(R.id.list_root)).perform(
|
|
|
+ RecyclerViewActions.actionOnItemAtPosition<OCFileListItemViewHolder>(
|
|
|
+ 0,
|
|
|
+ click()
|
|
|
+ )
|
|
|
+ )
|
|
|
+ shortSleep()
|
|
|
+ checkToolbarTitle(topFolder)
|
|
|
+ // sort button should now be visible
|
|
|
+ onView(withId(R.id.sort_button)).check(matches(ViewMatchers.isDisplayed()))
|
|
|
+
|
|
|
+ // browse back, should be back to All Files
|
|
|
+ Espresso.pressBack()
|
|
|
+ checkToolbarTitle(sut.getString(R.string.app_name))
|
|
|
+ onView(withId(R.id.sort_button)).check(matches(ViewMatchers.isDisplayed()))
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
fun switchToGridView() {
|
|
|
activityRule.launchActivity(null)
|
|
@@ -167,12 +263,12 @@ class FileDisplayActivityIT : AbstractOnServerIT() {
|
|
|
.execute(client)
|
|
|
.isSuccess
|
|
|
)
|
|
|
- Espresso.onView(ViewMatchers.withId(R.id.switch_grid_view_button)).perform(ViewActions.click())
|
|
|
+ onView(withId(R.id.switch_grid_view_button)).perform(click())
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
fun openAccountSwitcher() {
|
|
|
activityRule.launchActivity(null)
|
|
|
- Espresso.onView(ViewMatchers.withId(R.id.switch_account_button)).perform(ViewActions.click())
|
|
|
+ onView(withId(R.id.switch_account_button)).perform(click())
|
|
|
}
|
|
|
}
|