Browse Source

- removed test data
- added tests

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>

tobiasKaminsky 4 years ago
parent
commit
4ca33a8438

BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone.png


+ 108 - 4
src/androidTest/java/com/owncloud/android/ui/fragment/FileDetailFragmentStaticServerIT.kt

@@ -25,10 +25,16 @@ package com.owncloud.android.ui.fragment
 import androidx.test.espresso.intent.rule.IntentsTestRule
 import com.nextcloud.client.TestActivity
 import com.owncloud.android.AbstractIT
+import com.owncloud.android.R
 import com.owncloud.android.datamodel.OCFile
+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.utils.ScreenshotTest
 import org.junit.Rule
 import org.junit.Test
+import java.util.GregorianCalendar
 
 class FileDetailFragmentStaticServerIT : AbstractIT() {
     @get:Rule
@@ -58,12 +64,110 @@ class FileDetailFragmentStaticServerIT : AbstractIT() {
 
     @Test
     @ScreenshotTest
-    fun showDetails_Activities() {
-        val sut = testActivityRule.launchActivity(null)
-        sut.addFragment(FileDetailFragment.newInstance(file, user, 0))
+    @Suppress("MagicNumber")
+    fun showDetailsActivities() {
+        val activity = testActivityRule.launchActivity(null)
+        val sut = FileDetailFragment.newInstance(file, user, 0)
+        activity.addFragment(sut)
 
         waitForIdleSync()
-        screenshot(sut)
+
+        val date = GregorianCalendar()
+        date.set(2005, 4, 17, 10, 35, 30) // random date
+
+        val richObjectList: ArrayList<RichObject> = 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<PreviewObject> = ArrayList()
+        previewObjectList1.add(PreviewObject(1, "source", "link", true, "text/plain", "view"))
+
+        val richObjectList2: ArrayList<RichObject> = ArrayList()
+        richObjectList2.add(RichObject("user", "admin", "Admin", "", "", ""))
+
+        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(
+                2,
+                date.time,
+                date.time,
+                "comments",
+                "comments",
+                "user1",
+                "user1",
+                "admin commented",
+                "test2",
+                "icon",
+                "link",
+                "files",
+                "1",
+                "/text.txt",
+                null,
+                null
+            )
+        )
+
+        activity.runOnUiThread {
+            sut.fileDetailActivitiesFragment.populateList(activities as List<Any>?, true)
+        }
+
+        screenshot(activity)
+    }
+
+    @Test
+    @ScreenshotTest
+    fun showDetailsActivitiesNone() {
+        val activity = testActivityRule.launchActivity(null)
+        val sut = FileDetailFragment.newInstance(file, user, 0)
+        activity.addFragment(sut)
+
+        waitForIdleSync()
+
+        activity.runOnUiThread {
+            sut.fileDetailActivitiesFragment.populateList(emptyList(), true)
+        }
+
+        shortSleep()
+
+        screenshot(activity)
+    }
+
+    @Test
+    @ScreenshotTest
+    fun showDetailsActivitiesError() {
+        val activity = testActivityRule.launchActivity(null)
+        val sut = FileDetailFragment.newInstance(file, user, 0)
+        activity.addFragment(sut)
+
+        waitForIdleSync()
+
+        activity.runOnUiThread {
+            sut
+                .fileDetailActivitiesFragment
+                .setErrorContent(targetContext.resources.getString(R.string.file_detail_activity_error))
+        }
+
+        shortSleep()
+        shortSleep()
+
+        screenshot(activity)
     }
 
     @Test

+ 17 - 12
src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java

@@ -74,6 +74,7 @@ import java.util.List;
 import javax.inject.Inject;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.VisibleForTesting;
 import androidx.core.content.res.ResourcesCompat;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentActivity;
@@ -340,7 +341,6 @@ public class FileDetailActivitiesFragment extends Fragment implements
 
                 Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute");
                 RemoteOperationResult result = nextcloudClient.execute(getRemoteNotificationOperation);
-                result = new RemoteOperationResult(RemoteOperationResult.ResultCode.UNHANDLED_HTTP_CODE);
 
                 ArrayList<Object> versions = null;
                 if (restoreFileVersionSupported) {
@@ -368,15 +368,6 @@ public class FileDetailActivitiesFragment extends Fragment implements
 
                     activity.runOnUiThread(() -> {
                         populateList(activitiesAndVersions, lastGiven == -1);
-                        if (adapter.getItemCount() == 0) {
-                            setEmptyContent(noResultsHeadline, noResultsMessage);
-                            list.setVisibility(View.GONE);
-                            empty.setVisibility(View.VISIBLE);
-                        } else {
-                            empty.setVisibility(View.GONE);
-                            list.setVisibility(View.VISIBLE);
-                        }
-                        isLoadingActivities = false;
                     });
                 } else {
                     Log_OC.d(TAG, result.getLogMessage());
@@ -415,8 +406,19 @@ public class FileDetailActivitiesFragment extends Fragment implements
         }).start();
     }
 
-    private void populateList(List<Object> activities, boolean clear) {
+    @VisibleForTesting
+    public void populateList(List<Object> activities, boolean clear) {
         adapter.setActivityAndVersionItems(activities, nextcloudClient, clear);
+
+        if (adapter.getItemCount() == 0) {
+            setEmptyContent(noResultsHeadline, noResultsMessage);
+            swipeListRefreshLayout.setVisibility(View.GONE);
+            swipeEmptyListRefreshLayout.setVisibility(View.VISIBLE);
+        } else {
+            swipeListRefreshLayout.setVisibility(View.VISIBLE);
+            swipeEmptyListRefreshLayout.setVisibility(View.GONE);
+        }
+        isLoadingActivities = false;
     }
 
     private void setEmptyContent(String headline, String message) {
@@ -433,7 +435,8 @@ public class FileDetailActivitiesFragment extends Fragment implements
         }
     }
 
-    private void setErrorContent(String message) {
+    @VisibleForTesting
+    public void setErrorContent(String message) {
         if (emptyContentContainer != null && emptyContentMessage != null) {
             emptyContentHeadline.setText(R.string.common_error);
             emptyContentIcon.setImageDrawable(ResourcesCompat.getDrawable(requireContext().getResources(),
@@ -444,6 +447,8 @@ public class FileDetailActivitiesFragment extends Fragment implements
             emptyContentMessage.setVisibility(View.VISIBLE);
             emptyContentProgressBar.setVisibility(View.GONE);
             emptyContentIcon.setVisibility(View.VISIBLE);
+            swipeListRefreshLayout.setVisibility(View.GONE);
+            swipeEmptyListRefreshLayout.setVisibility(View.VISIBLE);
         }
     }