Merge pull request #6961 from nextcloud/comment

Fix not showing comments in file detail view
This commit is contained in:
Tobias Kaminsky 2020-09-17 16:31:05 +02:00 committed by GitHub
commit 5f8bd7d5f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 125 additions and 16 deletions

View File

@ -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

View File

@ -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);
}
}