diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_empty.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_empty.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_empty.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_empty.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_empty_light_white.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_empty_light_white.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_empty_light_white.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_empty_light_white.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_error.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_error.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_error.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_error.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_error_light_white.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_error_light_white.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_error_light_white.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_error_light_white.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_loading.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_loading.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_loading.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_loading.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_dark_black.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_dark_black.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_dark_black.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_dark_black.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_dark_blue.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_dark_blue.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_dark_blue.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_dark_blue.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_dark_white.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_dark_white.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_dark_white.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_dark_white.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_light_black.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_light_black.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_light_black.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_light_black.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_light_white.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_light_white.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_openDrawer_light_white.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_openDrawer_light_white.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_showActivities.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_showActivities.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_showActivities.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_showActivities.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_showActivities_light_white.png b/app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_showActivities_light_white.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.ActivitiesActivityIT_showActivities_light_white.png rename to app/screenshots/generic/debug/com.nextcloud.client.ActivitiesFragmentIT_showActivities_light_white.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open.png b/app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open.png rename to app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_dark_black.png b/app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_dark_black.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_dark_black.png rename to app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_dark_black.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_dark_blue.png b/app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_dark_blue.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_dark_blue.png rename to app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_dark_blue.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_dark_white.png b/app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_dark_white.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_dark_white.png rename to app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_dark_white.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_light_black.png b/app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_light_black.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_light_black.png rename to app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_light_black.png diff --git a/app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_light_white.png b/app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_light_white.png similarity index 100% rename from app/screenshots/generic/debug/com.nextcloud.client.CommunityActivityIT_open_light_white.png rename to app/screenshots/generic/debug/com.nextcloud.client.CommunityFragmentIT_open_light_white.png diff --git a/app/src/androidTest/java/com/nextcloud/client/ActivitiesActivityIT.kt b/app/src/androidTest/java/com/nextcloud/client/ActivitiesActivityIT.kt deleted file mode 100644 index cbe58b420ae8..000000000000 --- a/app/src/androidTest/java/com/nextcloud/client/ActivitiesActivityIT.kt +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Nextcloud - Android Client - * - * SPDX-FileCopyrightText: 2020 Tobias Kaminsky - * SPDX-FileCopyrightText: 2020 Nextcloud GmbH - * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only - */ -package com.nextcloud.client - -import android.view.View -import androidx.test.core.app.launchActivity -import androidx.test.espresso.Espresso.onView -import androidx.test.espresso.assertion.ViewAssertions.matches -import androidx.test.espresso.contrib.DrawerActions -import androidx.test.espresso.matcher.ViewMatchers.isDisplayed -import androidx.test.espresso.matcher.ViewMatchers.isRoot -import androidx.test.espresso.matcher.ViewMatchers.withId -import com.owncloud.android.AbstractIT -import com.owncloud.android.R -import com.owncloud.android.lib.resources.activities.model.Activity -import com.owncloud.android.lib.resources.activities.model.RichElement -import com.owncloud.android.lib.resources.activities.model.RichObject -import com.owncloud.android.lib.resources.activities.models.PreviewObject -import com.owncloud.android.lib.resources.status.OCCapability -import com.owncloud.android.ui.activities.ActivitiesActivity -import com.owncloud.android.utils.ScreenshotTest -import org.junit.Test -import java.util.GregorianCalendar - -class ActivitiesActivityIT : AbstractIT() { - private val testClassName = "com.nextcloud.client.ActivitiesActivityIT" - - @Test - @ScreenshotTest - fun openDrawer() { - launchActivity().use { scenario -> - onView(withId(R.id.drawer_layout)).perform(DrawerActions.open()) - - scenario.onActivity { sut -> - val screenShotName = createName("${testClassName}_openDrawer", "") - screenshotViaName(sut, screenShotName) - } - - onView(withId(R.id.drawer_layout)).check(matches(isDisplayed())) - } - } - - @Test - @ScreenshotTest - fun loading() { - launchActivity().use { scenario -> - scenario.onActivity { sut -> - sut.binding?.emptyList?.root?.visibility = View.GONE - sut.binding?.swipeContainingList?.visibility = View.GONE - sut.binding?.loadingContent?.visibility = View.VISIBLE - } - - val screenShotName = createName(testClassName + "_" + "loading", "") - onView(isRoot()).check(matches(isDisplayed())) - - scenario.onActivity { sut -> - screenshotViaName(sut, screenShotName) - } - } - } - - @Test - @ScreenshotTest - fun empty() { - launchActivity().use { scenario -> - scenario.onActivity { sut -> - sut.showActivities(mutableListOf(), nextcloudClient, -1) - sut.setProgressIndicatorState(false) - } - - val screenShotName = createName(testClassName + "_" + "empty", "") - onView(isRoot()).check(matches(isDisplayed())) - - scenario.onActivity { sut -> - screenshotViaName(sut, screenShotName) - } - } - } - - @Test - @ScreenshotTest - @SuppressWarnings("MagicNumber") - fun showActivities() { - val capability = OCCapability() - capability.versionMayor = 20 - fileDataStorageManager.saveCapabilities(capability) - - val date = GregorianCalendar() - date.set(2005, 4, 17, 10, 35, 30) // random date - - val richObjectList: ArrayList = ArrayList() - richObjectList.add(RichObject("file", "abc", "text.txt", "/text.txt", "link", "tag")) - richObjectList.add(RichObject("file", "1", "text.txt", "/text.txt", "link", "tag")) - - val previewObjectList1: ArrayList = ArrayList() - previewObjectList1.add(PreviewObject(1, "source", "link", true, "text/plain", "view", "test1.txt")) - - val previewObjectList3: ArrayList = ArrayList() - previewObjectList3.add(PreviewObject(1, "source", "link", true, "image/jpg", "view", "test1.jpg")) - - val activities = mutableListOf( - Activity( - 1, - date.time, - date.time, - "files", - "file_changed", - "user1", - "user1", - "You changed text.txt", - "", - "icon", - "link", - "files", - "1", - "/text.txt", - previewObjectList1, - RichElement("", richObjectList) - ), - Activity( - 1, - date.time, - date.time, - "dav", - "calendar_event", - "user1", - "user1", - "You have deleted calendar entry Appointment", - "", - "icon", - "link", - "calendar", - "35", - "", - ArrayList(), - RichElement() - ), - Activity( - 1, - date.time, - date.time, - "files", - "file_changed", - "user1", - "user1", - "You changed image.jpg", - "", - "icon", - "link", - "files", - "1", - "/image.jpg", - previewObjectList3, - RichElement("", richObjectList) - ) - ) - - launchActivity().use { scenario -> - scenario.onActivity { sut -> - sut.showActivities(activities as List, nextcloudClient, -1) - sut.setProgressIndicatorState(false) - } - - val screenShotName = createName(testClassName + "_" + "showActivities", "") - onView(isRoot()).check(matches(isDisplayed())) - - scenario.onActivity { sut -> - screenshotViaName(sut, screenShotName) - } - } - } - - @Test - @ScreenshotTest - fun error() { - launchActivity().use { scenario -> - scenario.onActivity { sut -> - sut.showEmptyContent("Error", "Error! Please try again later!") - sut.setProgressIndicatorState(false) - } - - val screenShotName = createName(testClassName + "_" + "error", "") - onView(isRoot()).check(matches(isDisplayed())) - - scenario.onActivity { sut -> - screenshotViaName(sut, screenShotName) - } - } - } -} diff --git a/app/src/androidTest/java/com/nextcloud/client/ActivitiesFragmentIT.kt b/app/src/androidTest/java/com/nextcloud/client/ActivitiesFragmentIT.kt new file mode 100644 index 000000000000..087466e82f6d --- /dev/null +++ b/app/src/androidTest/java/com/nextcloud/client/ActivitiesFragmentIT.kt @@ -0,0 +1,161 @@ +/* + * Nextcloud - Android Client + * + * SPDX-FileCopyrightText: 2026 Alper Ozturk + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +package com.nextcloud.client + +import android.view.View +import androidx.test.core.app.ActivityScenario +import androidx.test.core.app.ApplicationProvider +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.contrib.DrawerActions +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.isRoot +import androidx.test.espresso.matcher.ViewMatchers.withId +import com.owncloud.android.AbstractIT +import com.owncloud.android.R +import com.owncloud.android.lib.resources.activities.model.Activity +import com.owncloud.android.lib.resources.activities.model.RichElement +import com.owncloud.android.lib.resources.activities.model.RichObject +import com.owncloud.android.lib.resources.activities.models.PreviewObject +import com.owncloud.android.lib.resources.status.OCCapability +import com.owncloud.android.ui.fragment.ActivitiesFragment +import com.owncloud.android.ui.navigation.NavigatorActivity +import com.owncloud.android.ui.navigation.NavigatorScreen +import com.owncloud.android.utils.ScreenshotTest +import org.junit.Test +import java.util.GregorianCalendar + +class ActivitiesFragmentIT : AbstractIT() { + private val testClassName = "com.nextcloud.client.ActivitiesFragmentIT" + + private fun ActivityScenario.getFragment(): ActivitiesFragment? { + var fragment: ActivitiesFragment? = null + onActivity { activity -> + fragment = activity.supportFragmentManager + .findFragmentByTag(NavigatorScreen.Activities.tag) as? ActivitiesFragment + } + return fragment + } + + private fun launchActivitiesActivity(): ActivityScenario { + val intent = NavigatorActivity.intent( + ApplicationProvider.getApplicationContext(), + NavigatorScreen.Activities + ) + return ActivityScenario.launch(intent) + } + + @Test + @ScreenshotTest + fun openDrawer() { + launchActivitiesActivity().use { scenario -> + onView(withId(R.id.drawer_layout)).perform(DrawerActions.open()) + scenario.onActivity { sut -> + val screenShotName = createName("${testClassName}_openDrawer", "") + screenshotViaName(sut, screenShotName) + } + onView(withId(R.id.drawer_layout)).check(matches(isDisplayed())) + } + } + + @Test + @ScreenshotTest + fun loading() { + launchActivitiesActivity().use { scenario -> + val fragment = scenario.getFragment() ?: return + scenario.onActivity { + fragment.binding.emptyList.root.visibility = View.GONE + fragment.binding.swipeContainingList.visibility = View.GONE + fragment.binding.loadingContent.visibility = View.VISIBLE + } + val screenShotName = createName("${testClassName}_loading", "") + onView(isRoot()).check(matches(isDisplayed())) + scenario.onActivity { sut -> screenshotViaName(sut, screenShotName) } + } + } + + @Test + @ScreenshotTest + fun empty() { + launchActivitiesActivity().use { scenario -> + val fragment = scenario.getFragment() ?: return + scenario.onActivity { + fragment.showActivities(mutableListOf(), nextcloudClient, -1) + fragment.setProgressIndicatorState(false) + } + val screenShotName = createName("${testClassName}_empty", "") + onView(isRoot()).check(matches(isDisplayed())) + scenario.onActivity { sut -> screenshotViaName(sut, screenShotName) } + } + } + + @Test + @ScreenshotTest + @SuppressWarnings("MagicNumber") + fun showActivities() { + val capability = OCCapability() + capability.versionMayor = 20 + fileDataStorageManager.saveCapabilities(capability) + + val date = GregorianCalendar() + date.set(2005, 4, 17, 10, 35, 30) + + val richObjectList: ArrayList = ArrayList() + richObjectList.add(RichObject("file", "abc", "text.txt", "/text.txt", "link", "tag")) + richObjectList.add(RichObject("file", "1", "text.txt", "/text.txt", "link", "tag")) + + val previewObjectList1: ArrayList = ArrayList() + previewObjectList1.add(PreviewObject(1, "source", "link", true, "text/plain", "view", "test1.txt")) + + val previewObjectList3: ArrayList = ArrayList() + previewObjectList3.add(PreviewObject(1, "source", "link", true, "image/jpg", "view", "test1.jpg")) + + val activities = mutableListOf( + Activity( + 1, date.time, date.time, "files", "file_changed", "user1", "user1", + "You changed text.txt", "", "icon", "link", "files", "1", "/text.txt", + previewObjectList1, RichElement("", richObjectList) + ), + Activity( + 1, date.time, date.time, "dav", "calendar_event", "user1", "user1", + "You have deleted calendar entry Appointment", "", "icon", "link", "calendar", + "35", "", ArrayList(), RichElement() + ), + Activity( + 1, date.time, date.time, "files", "file_changed", "user1", "user1", + "You changed image.jpg", "", "icon", "link", "files", "1", "/image.jpg", + previewObjectList3, RichElement("", richObjectList) + ) + ) + + launchActivitiesActivity().use { scenario -> + val fragment = scenario.getFragment() ?: return + scenario.onActivity { + fragment.showActivities(activities as List, nextcloudClient, -1) + fragment.setProgressIndicatorState(false) + } + val screenShotName = createName("${testClassName}_showActivities", "") + onView(isRoot()).check(matches(isDisplayed())) + scenario.onActivity { sut -> screenshotViaName(sut, screenShotName) } + } + } + + @Test + @ScreenshotTest + fun error() { + launchActivitiesActivity().use { scenario -> + val fragment = scenario.getFragment() ?: return + scenario.onActivity { + fragment.showEmptyContent("Error", "Error! Please try again later!") + fragment.setProgressIndicatorState(false) + } + val screenShotName = createName("${testClassName}_error", "") + onView(isRoot()).check(matches(isDisplayed())) + scenario.onActivity { sut -> screenshotViaName(sut, screenShotName) } + } + } +} diff --git a/app/src/androidTest/java/com/nextcloud/client/CommunityFragmentIT.kt b/app/src/androidTest/java/com/nextcloud/client/CommunityFragmentIT.kt index b7d1e1fa2a0a..269200b408d3 100644 --- a/app/src/androidTest/java/com/nextcloud/client/CommunityFragmentIT.kt +++ b/app/src/androidTest/java/com/nextcloud/client/CommunityFragmentIT.kt @@ -26,7 +26,7 @@ class CommunityFragmentIT : AbstractIT() { private val testClassName = "com.nextcloud.client.CommunityFragmentIT" @get:Rule - var storagePermissionRule: TestRule = grant() + var storagePermissionRules: TestRule = grant() @Test @ScreenshotTest diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/ActivitiesFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/ActivitiesFragment.kt index add303d5b88b..cf2ca680b634 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/ActivitiesFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/ActivitiesFragment.kt @@ -61,7 +61,7 @@ class ActivitiesFragment : lateinit var userAccountManager: UserAccountManager private var _binding: FragmentActivitiesBinding? = null - private val binding get() = _binding!! + internal val binding get() = _binding!! private var adapter: ActivityListAdapter? = null private var lastGiven: Long = 0