Index: chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeUnitTest.java |
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeUnitTest.java |
index 1885883c397d071aac09d86dce4dcc2bc0106ebd..6ab4d4ac0dc2e091db7f3139b3b7c0bd430bbf43 100644 |
--- a/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeUnitTest.java |
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeUnitTest.java |
@@ -6,13 +6,10 @@ package org.chromium.chrome.browser.offlinepages; |
import static org.junit.Assert.assertEquals; |
import static org.junit.Assert.assertNotNull; |
-import static org.junit.Assert.assertTrue; |
+import static org.mockito.ArgumentMatchers.any; |
import static org.mockito.ArgumentMatchers.anyListOf; |
import static org.mockito.ArgumentMatchers.anyLong; |
-import static org.mockito.ArgumentMatchers.anyString; |
-import static org.mockito.ArgumentMatchers.eq; |
import static org.mockito.Mockito.doAnswer; |
-import static org.mockito.Mockito.doReturn; |
import static org.mockito.Mockito.spy; |
import static org.mockito.Mockito.times; |
import static org.mockito.Mockito.verify; |
@@ -31,13 +28,12 @@ import org.robolectric.shadows.multidex.ShadowMultiDex; |
import org.chromium.base.BaseChromiumApplication; |
import org.chromium.base.Callback; |
-import org.chromium.base.ThreadUtils; |
import org.chromium.base.test.util.Feature; |
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageModelObserver; |
import org.chromium.testing.local.LocalRobolectricTestRunner; |
+import java.util.ArrayList; |
import java.util.List; |
-import java.util.Set; |
/** |
* Unit tests for OfflinePageUtils. |
@@ -69,6 +65,15 @@ public class OfflinePageBridgeUnitTest { |
@Captor |
ArgumentCaptor<Callback<List<OfflinePageItem>>> mCallbackArgument; |
+ @Captor |
+ ArgumentCaptor<String[]> mNamespacesArgument; |
+ |
+ @Captor |
+ ArgumentCaptor<String[]> mIdsArgument; |
+ |
+ @Captor |
+ ArgumentCaptor<Callback<Integer>> mDeleteCallbackArgument; |
+ |
/** |
* Mocks the observer. |
*/ |
@@ -92,67 +97,6 @@ public class OfflinePageBridgeUnitTest { |
} |
/** |
- * Tests OfflinePageBridge#getPageByClientId() method in a scenario where a model was loaded. |
- */ |
- @Test |
- @Feature({"OfflinePages"}) |
- public void testGetPageByClientId() { |
- doReturn(new long[] {123, 456}) |
- .when(mBridge) |
- .nativeGetOfflineIdsForClientId(anyLong(), eq(TEST_NAMESPACE), eq(TEST_ID)); |
- |
- mBridge.offlinePageModelLoaded(); |
- |
- ClientId testClientId = new ClientId(TEST_NAMESPACE, TEST_ID); |
- Set<Long> result = mBridge.getOfflineIdsForClientId(testClientId); |
- assertEquals(2, result.size()); |
- assertTrue(result.contains(123L)); |
- assertTrue(result.contains(456L)); |
- verify(mBridge, times(1)) |
- .nativeGetOfflineIdsForClientId(anyLong(), anyString(), anyString()); |
- } |
- |
- /** |
- * Tests getClientIdForOfflineId. |
- */ |
- @Test |
- @Feature({"OfflinePages"}) |
- public void testGetClientIdForOfflineId() { |
- doReturn(TEST_OFFLINE_PAGE_ITEM) |
- .when(mBridge) |
- .nativeGetPageByOfflineId(anyLong(), eq(TEST_OFFLINE_ID)); |
- |
- mBridge.offlinePageModelLoaded(); |
- long testOfflineId = TEST_OFFLINE_ID; |
- ClientId resultClientId = mBridge.getClientIdForOfflineId(testOfflineId); |
- assertEquals(resultClientId, TEST_CLIENT_ID); |
- verify(mBridge, times(1)).getClientIdForOfflineId(eq(TEST_OFFLINE_ID)); |
- verify(mBridge, times(1)).nativeGetPageByOfflineId(anyLong(), eq(TEST_OFFLINE_ID)); |
- } |
- |
- /** |
- * Tests getClientIdForOfflineId for null. |
- */ |
- @Test |
- @Feature({"OfflinePages"}) |
- public void testGetClientIdForOfflineIdNull() { |
- doReturn(null).when(mBridge).nativeGetPageByOfflineId(anyLong(), eq(TEST_OFFLINE_ID)); |
- mBridge.offlinePageModelLoaded(); |
- long testOfflineId = TEST_OFFLINE_ID; |
- ClientId resultClientId = mBridge.getClientIdForOfflineId(testOfflineId); |
- assertEquals(resultClientId, null); |
- verify(mBridge, times(1)).getClientIdForOfflineId(eq(TEST_OFFLINE_ID)); |
- verify(mBridge, times(1)).nativeGetPageByOfflineId(anyLong(), eq(TEST_OFFLINE_ID)); |
- } |
- |
- @Test(expected = AssertionError.class) |
- @Feature({"OfflinePages"}) |
- public void testGetPageByClientId_ModelNotLoaded() { |
- ClientId testClientId = new ClientId("TEST_NAMESPACE", "TEST_ID"); |
- Set<Long> result = mBridge.getOfflineIdsForClientId(testClientId); |
- } |
- |
- /** |
* Tests OfflinePageBridge#OfflinePageDeleted() callback with two observers attached. |
*/ |
@Test |
@@ -202,6 +146,78 @@ public class OfflinePageBridgeUnitTest { |
verify(callback, times(1)).onResult(anyListOf(OfflinePageItem.class)); |
} |
+ /** |
+ * Tests OfflinePageBridge#GetPagesByClientIds() callback when there are no pages. |
+ */ |
+ @Test |
+ @Feature({"OfflinePages"}) |
+ public void testGetPagesByClientIds_listOfClientIdsEmpty() { |
+ final int itemCount = 0; |
+ answerGetPagesByClientIds(itemCount); |
+ |
+ Callback<List<OfflinePageItem>> callback = createMultipleItemCallback(itemCount); |
+ ClientId secondClientId = new ClientId(TEST_NAMESPACE, "id number two"); |
+ List<ClientId> list = new ArrayList<>(); |
+ mBridge.getPagesByClientIds(list, callback); |
+ |
+ verify(callback, times(1)).onResult(anyListOf(OfflinePageItem.class)); |
+ } |
+ |
+ /** |
+ * Tests OfflinePageBridge#GetPagesByClientIds() callback when there are pages. |
+ */ |
+ @Test |
+ @Feature({"OfflinePages"}) |
+ public void testGetPagesByClientIds() { |
+ final int itemCount = 2; |
+ answerGetPagesByClientIds(itemCount); |
+ |
+ Callback<List<OfflinePageItem>> callback = createMultipleItemCallback(itemCount); |
+ ClientId secondClientId = new ClientId(TEST_NAMESPACE, "id number two"); |
+ List<ClientId> list = new ArrayList<>(); |
+ list.add(TEST_CLIENT_ID); |
+ list.add(secondClientId); |
+ mBridge.getPagesByClientIds(list, callback); |
+ |
+ verify(callback, times(1)).onResult(anyListOf(OfflinePageItem.class)); |
+ } |
+ |
+ /** |
+ * Tests OfflinePageBridge#DeletePagesByClientIds() callback when there are no pages. |
+ */ |
+ @Test |
+ @Feature({"OfflinePages"}) |
+ public void testDeletePagesByClientIds_listOfClientIdsEmpty() { |
+ final int itemCount = 0; |
+ answerDeletePagesByClientIds(itemCount); |
+ |
+ Callback<Integer> callback = createDeletePageCallback(); |
+ ClientId secondClientId = new ClientId(TEST_NAMESPACE, "id number two"); |
+ List<ClientId> list = new ArrayList<>(); |
+ mBridge.deletePagesByClientId(list, callback); |
+ |
+ verify(callback, times(1)).onResult(any(Integer.class)); |
+ } |
+ |
+ /** |
+ * Tests OfflinePageBridge#DeletePagesByClientIds() callback when there are pages. |
+ */ |
+ @Test |
+ @Feature({"OfflinePages"}) |
+ public void testDeletePagesByClientIds() { |
+ final int itemCount = 2; |
+ answerDeletePagesByClientIds(itemCount); |
+ |
+ Callback<Integer> callback = createDeletePageCallback(); |
+ ClientId secondClientId = new ClientId(TEST_NAMESPACE, "id number two"); |
+ List<ClientId> list = new ArrayList<>(); |
+ list.add(TEST_CLIENT_ID); |
+ list.add(secondClientId); |
+ mBridge.deletePagesByClientId(list, callback); |
+ |
+ verify(callback, times(1)).onResult(any(Integer.class)); |
+ } |
+ |
/** Performs a proper cast from Object to a List<OfflinePageItem>. */ |
private static List<OfflinePageItem> convertToListOfOfflinePages(Object o) { |
@SuppressWarnings("unchecked") |
@@ -209,15 +225,6 @@ public class OfflinePageBridgeUnitTest { |
return list; |
} |
- private void postOfflinePageModelLoadedEvent() { |
- ThreadUtils.postOnUiThread(new Runnable() { |
- @Override |
- public void run() { |
- mBridge.offlinePageModelLoaded(); |
- } |
- }); |
- } |
- |
private Callback<List<OfflinePageItem>> createMultipleItemCallback(final int itemCount) { |
return spy(new Callback<List<OfflinePageItem>>() { |
@Override |
@@ -228,6 +235,13 @@ public class OfflinePageBridgeUnitTest { |
}); |
} |
+ private Callback<Integer> createDeletePageCallback() { |
+ return spy(new Callback<Integer>() { |
+ @Override |
+ public void onResult(Integer result) {} |
+ }); |
+ } |
+ |
private void answerNativeGetAllPages(final int itemCount) { |
Answer<Void> answer = new Answer<Void>() { |
@Override |
@@ -245,4 +259,51 @@ public class OfflinePageBridgeUnitTest { |
doAnswer(answer).when(mBridge).nativeGetAllPages( |
anyLong(), mResultArgument.capture(), mCallbackArgument.capture()); |
} |
+ |
+ private void answerGetPagesByClientIds(final int itemCount) { |
+ Answer<Void> answer = new Answer<Void>() { |
+ @Override |
+ public Void answer(InvocationOnMock invocation) { |
+ List<OfflinePageItem> result = mResultArgument.getValue(); |
+ String[] namespaces = mNamespacesArgument.getValue(); |
+ String[] ids = mIdsArgument.getValue(); |
+ |
+ assertEquals(namespaces.length, itemCount); |
+ assertEquals(ids.length, itemCount); |
+ |
+ for (int i = 0; i < itemCount; i++) { |
+ result.add(TEST_OFFLINE_PAGE_ITEM); |
+ } |
+ |
+ mCallbackArgument.getValue().onResult(result); |
+ |
+ return null; |
+ } |
+ }; |
+ |
+ doAnswer(answer).when(mBridge).nativeGetPagesByClientId(anyLong(), |
+ mResultArgument.capture(), mNamespacesArgument.capture(), mIdsArgument.capture(), |
+ mCallbackArgument.capture()); |
+ } |
+ |
+ private void answerDeletePagesByClientIds(final int itemCount) { |
+ Answer<Void> answer = new Answer<Void>() { |
+ @Override |
+ public Void answer(InvocationOnMock invocation) { |
+ String[] namespaces = mNamespacesArgument.getValue(); |
+ String[] ids = mIdsArgument.getValue(); |
+ |
+ assertEquals(namespaces.length, itemCount); |
+ assertEquals(ids.length, itemCount); |
+ |
+ mDeleteCallbackArgument.getValue().onResult(Integer.valueOf(0)); |
+ |
+ return null; |
+ } |
+ }; |
+ |
+ doAnswer(answer).when(mBridge).nativeDeletePagesByClientId(anyLong(), |
+ mNamespacesArgument.capture(), mIdsArgument.capture(), |
+ mDeleteCallbackArgument.capture()); |
+ } |
} |