1739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay/* 2739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * Copyright (C) 2016 The Android Open Source Project 3739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * 4739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * Licensed under the Apache License, Version 2.0 (the "License"); 5739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * you may not use this file except in compliance with the License. 6739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * You may obtain a copy of the License at 7739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * 8739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * http://www.apache.org/licenses/LICENSE-2.0 9739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * 10739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * Unless required by applicable law or agreed to in writing, software 11739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * distributed under the License is distributed on an "AS IS" BASIS, 12739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * See the License for the specific language governing permissions and 14739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay * limitations under the License. 15739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay */ 16739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 17739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKaypackage com.android.documentsui; 18739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 19f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tanimport static junit.framework.Assert.assertTrue; 20f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 21988d8a354b00dce7e24deee187c08a4591956ac9Steve McKayimport static org.junit.Assert.assertEquals; 22988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay 23739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport android.content.Intent; 24f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tanimport android.net.Uri; 25739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport android.os.Parcelable; 26f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tanimport android.provider.DocumentsContract; 271686883a8d049b399e34954a4feaa98490277ae8Garfield Tanimport android.provider.DocumentsContract.Path; 28988d8a354b00dce7e24deee187c08a4591956ac9Steve McKayimport android.support.test.filters.MediumTest; 29739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport android.support.test.runner.AndroidJUnit4; 30739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 31739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport com.android.documentsui.base.DocumentStack; 32739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport com.android.documentsui.base.RootInfo; 33739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport com.android.documentsui.base.Shared; 34739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport com.android.documentsui.dirlist.DocumentDetails; 35b6006b2ef723fdbb3fef3b4a350c8d363b127d0fSteve McKayimport com.android.documentsui.files.LauncherActivity; 36e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tanimport com.android.documentsui.sorting.SortDimension; 37e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tanimport com.android.documentsui.sorting.SortModel; 38f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tanimport com.android.documentsui.testing.DocumentStackAsserts; 39739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport com.android.documentsui.testing.Roots; 40988d8a354b00dce7e24deee187c08a4591956ac9Steve McKayimport com.android.documentsui.testing.TestEnv; 41e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tanimport com.android.documentsui.testing.TestEventHandler; 429bd4099ee27f8302a06fc66980079f29127318f8Jon Mannimport com.android.documentsui.testing.TestProvidersAccess; 43739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 44739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport org.junit.Before; 45739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport org.junit.Test; 46739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKayimport org.junit.runner.RunWith; 47739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 481686883a8d049b399e34954a4feaa98490277ae8Garfield Tanimport java.util.Arrays; 491686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 50c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay/** 51c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay * A unit test *for* AbstractActionHandler, not an abstract test baseclass. 52c8889af6757ecb348fb8fd6dadf84d67d3478cbfSteve McKay */ 53739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay@RunWith(AndroidJUnit4.class) 54988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay@MediumTest 55739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKaypublic class AbstractActionHandlerTest { 56739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 57739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay private TestActivity mActivity; 58988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay private TestEnv mEnv; 59739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay private AbstractActionHandler<TestActivity> mHandler; 60739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 61739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay @Before 62739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay public void setUp() { 63988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay mEnv = TestEnv.create(); 64e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan mActivity = TestActivity.create(mEnv); 65988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay mHandler = new AbstractActionHandler<TestActivity>( 66988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay mActivity, 67988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay mEnv.state, 682e81db6f2030ec6c8dd758c3020ce5db8363bf25Garfield Tan mEnv.providers, 69def4868b1e9ef8a5718c6bc2e165026cbe52b5daSteve McKay mEnv.docs, 7063bf8135243605949a3bb140167ef91f5c6ae2aeGarfield Tan mEnv.searchViewManager, 7130d8c7988e15336d995e4b5033ba533a8333446fJon Mann mEnv::lookupExecutor, 7230d8c7988e15336d995e4b5033ba533a8333446fJon Mann mEnv.injector) { 73739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 74739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay @Override 75739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay public void openRoot(RootInfo root) { 76739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay throw new UnsupportedOperationException(); 77739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay } 78739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 79739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay @Override 80d22cc1852ed3e028a37d713e41c57286d2e4c9f2Tomasz Mikolajewski public boolean openDocument(DocumentDetails doc, @ViewType int type, 81d22cc1852ed3e028a37d713e41c57286d2e4c9f2Tomasz Mikolajewski @ViewType int fallback) { 82739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay throw new UnsupportedOperationException(); 83739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay } 84988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay 85988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay @Override 86988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay public void initLocation(Intent intent) { 87988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay throw new UnsupportedOperationException(); 88988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay } 8992ae43d5d22331aad83e1a4302a7e1975f66354eSteve McKay 9092ae43d5d22331aad83e1a4302a7e1975f66354eSteve McKay @Override 91f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan protected void launchToDefaultLocation() { 92f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan throw new UnsupportedOperationException(); 93f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan } 94739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay }; 95739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay } 96739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 97739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay @Test 98739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay public void testOpenNewWindow() { 99739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay DocumentStack path = new DocumentStack(Roots.create("123")); 100739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay mHandler.openInNewWindow(path); 101739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay 102739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay Intent expected = LauncherActivity.createLaunchIntent(mActivity); 103739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay expected.putExtra(Shared.EXTRA_STACK, (Parcelable) path); 104988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay Intent actual = mActivity.startActivity.getLastValue(); 105988d8a354b00dce7e24deee187c08a4591956ac9Steve McKay assertEquals(expected.toString(), actual.toString()); 106739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay } 1071686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1081686883a8d049b399e34954a4feaa98490277ae8Garfield Tan @Test 1091686883a8d049b399e34954a4feaa98490277ae8Garfield Tan public void testOpensContainerDocuments_jumpToNewLocation() throws Exception { 1107a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin if (!mEnv.features.isLaunchToDocumentEnabled()) { 1117a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin return; 1127a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin } 1137a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin 1141686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mEnv.populateStack(); 1151686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1161686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mEnv.searchViewManager.isSearching = true; 1172a837422d25b44f2847bc82e7c90b4e8fcde1518Garfield Tan mEnv.docs.nextPath = new Path( 1189bd4099ee27f8302a06fc66980079f29127318f8Jon Mann TestProvidersAccess.HOME.rootId, 1191686883a8d049b399e34954a4feaa98490277ae8Garfield Tan Arrays.asList(TestEnv.FOLDER_1.documentId, TestEnv.FOLDER_2.documentId)); 1201686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mEnv.docs.nextDocuments = Arrays.asList(TestEnv.FOLDER_1, TestEnv.FOLDER_2); 1211686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1221686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mHandler.openContainerDocument(TestEnv.FOLDER_2); 1231686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1241686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mEnv.beforeAsserts(); 1251686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1262a837422d25b44f2847bc82e7c90b4e8fcde1518Garfield Tan assertEquals(mEnv.docs.nextPath.getPath().size(), mEnv.state.stack.size()); 1271686883a8d049b399e34954a4feaa98490277ae8Garfield Tan assertEquals(TestEnv.FOLDER_2, mEnv.state.stack.peek()); 1281686883a8d049b399e34954a4feaa98490277ae8Garfield Tan } 1291686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1301686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1311686883a8d049b399e34954a4feaa98490277ae8Garfield Tan @Test 1321686883a8d049b399e34954a4feaa98490277ae8Garfield Tan public void testOpensContainerDocuments_pushToRootDoc_NoFindPathSupport() throws Exception { 1331686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mEnv.populateStack(); 1341686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1351686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mEnv.searchViewManager.isSearching = true; 1361686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mEnv.docs.nextDocuments = Arrays.asList(TestEnv.FOLDER_1, TestEnv.FOLDER_2); 1371686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1381686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mHandler.openContainerDocument(TestEnv.FOLDER_2); 1391686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1401686883a8d049b399e34954a4feaa98490277ae8Garfield Tan mEnv.beforeAsserts(); 1411686883a8d049b399e34954a4feaa98490277ae8Garfield Tan 1421686883a8d049b399e34954a4feaa98490277ae8Garfield Tan assertEquals(2, mEnv.state.stack.size()); 1431686883a8d049b399e34954a4feaa98490277ae8Garfield Tan assertEquals(TestEnv.FOLDER_2, mEnv.state.stack.pop()); 1441686883a8d049b399e34954a4feaa98490277ae8Garfield Tan assertEquals(TestEnv.FOLDER_0, mEnv.state.stack.pop()); 1451686883a8d049b399e34954a4feaa98490277ae8Garfield Tan } 146f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 147f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan @Test 148db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin public void testOpensDocument_AssertionErrorIfAlreadyInStack() throws Exception { 149db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin mEnv.populateStack(); 150db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin boolean threw = false; 151db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin try { 152db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin mEnv.state.stack.push(TestEnv.FOLDER_0); 153db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin } catch (AssertionError e) { 154db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin threw = true; 155db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin } 156db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin assertTrue(threw); 157db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin } 158db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin 159db7a0e72cf791ecc9529d4ad1023393dbdd7f3e9Ben Lin @Test 160f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan public void testLaunchToDocuments() throws Exception { 1617a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin if (!mEnv.features.isLaunchToDocumentEnabled()) { 1627a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin return; 1637a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin } 1647a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin 165f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.docs.nextIsDocumentsUri = true; 166f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.docs.nextPath = new Path( 1679bd4099ee27f8302a06fc66980079f29127318f8Jon Mann TestProvidersAccess.HOME.rootId, 168f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan Arrays.asList( 169f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan TestEnv.FOLDER_0.documentId, 170f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan TestEnv.FOLDER_1.documentId, 171f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan TestEnv.FILE_GIF.documentId)); 172f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.docs.nextDocuments = 173f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan Arrays.asList(TestEnv.FOLDER_0, TestEnv.FOLDER_1, TestEnv.FILE_GIF); 174f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 175f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mActivity.refreshCurrentRootAndDirectory.assertNotCalled(); 176f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan assertTrue(mHandler.launchToDocument(TestEnv.FILE_GIF.derivedUri)); 177f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 178f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.beforeAsserts(); 179f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 1809bd4099ee27f8302a06fc66980079f29127318f8Jon Mann DocumentStackAsserts.assertEqualsTo(mEnv.state.stack, TestProvidersAccess.HOME, 181f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan Arrays.asList(TestEnv.FOLDER_0, TestEnv.FOLDER_1)); 182f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mActivity.refreshCurrentRootAndDirectory.assertCalled(); 183f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan } 184f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 185f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan @Test 186f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan public void testLaunchToDocuments_convertsTreeUriToDocumentUri() throws Exception { 1877a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin if (!mEnv.features.isLaunchToDocumentEnabled()) { 1887a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin return; 1897a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin } 1907a4fa239abefd05d03d2e62c651d7b08f682d8b4Ben Lin 191f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.docs.nextIsDocumentsUri = true; 192f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.docs.nextPath = new Path( 1939bd4099ee27f8302a06fc66980079f29127318f8Jon Mann TestProvidersAccess.HOME.rootId, 194f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan Arrays.asList( 195f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan TestEnv.FOLDER_0.documentId, 196f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan TestEnv.FOLDER_1.documentId, 197f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan TestEnv.FILE_GIF.documentId)); 198f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.docs.nextDocuments = 199f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan Arrays.asList(TestEnv.FOLDER_0, TestEnv.FOLDER_1, TestEnv.FILE_GIF); 200f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 201f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan final Uri treeBaseUri = DocumentsContract.buildTreeDocumentUri( 2029bd4099ee27f8302a06fc66980079f29127318f8Jon Mann TestProvidersAccess.HOME.authority, TestEnv.FOLDER_0.documentId); 203f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan final Uri treeDocUri = DocumentsContract.buildDocumentUriUsingTree( 204f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan treeBaseUri, TestEnv.FILE_GIF.documentId); 205f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan assertTrue(mHandler.launchToDocument(treeDocUri)); 206f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 207f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.beforeAsserts(); 208f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan 2099bd4099ee27f8302a06fc66980079f29127318f8Jon Mann DocumentStackAsserts.assertEqualsTo(mEnv.state.stack, TestProvidersAccess.HOME, 210f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan Arrays.asList(TestEnv.FOLDER_0, TestEnv.FOLDER_1)); 211f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mEnv.docs.lastUri.assertLastArgument(TestEnv.FILE_GIF.derivedUri); 212f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan mActivity.refreshCurrentRootAndDirectory.assertCalled(); 213f8969d63aa9e6d67e594997080f883ec84dfac71Garfield Tan } 214e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 215e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan @Test 216e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan public void testLoadChildrenDocuments() throws Exception { 2179bd4099ee27f8302a06fc66980079f29127318f8Jon Mann mEnv.state.stack.changeRoot(TestProvidersAccess.HOME); 218e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan mEnv.state.stack.push(TestEnv.FOLDER_0); 219e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 220e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan mEnv.state.sortModel.sortByUser( 221e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan SortModel.SORT_DIMENSION_ID_TITLE, SortDimension.SORT_DIRECTION_ASCENDING); 222e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 2232e81db6f2030ec6c8dd758c3020ce5db8363bf25Garfield Tan mEnv.mockProviders.get(TestProvidersAccess.HOME.authority) 224e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan .setNextChildDocumentsReturns(TestEnv.FILE_APK, TestEnv.FILE_GIF); 225e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 226e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan mHandler.loadDocumentsForCurrentStack(); 227e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan mActivity.loaderManager.runAsyncTaskLoader(AbstractActionHandler.LOADER_ID); 228e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 229e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan assertEquals(2, mEnv.model.getItemCount()); 230e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan String[] modelIds = mEnv.model.getModelIds(); 231e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan assertEquals(TestEnv.FILE_APK, mEnv.model.getDocument(modelIds[0])); 232e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan assertEquals(TestEnv.FILE_GIF, mEnv.model.getDocument(modelIds[1])); 233e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan } 234e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 235e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan @Test 236e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan public void testLoadChildrenDocuments_failsWithNonRecentsAndEmptyStack() throws Exception { 2379bd4099ee27f8302a06fc66980079f29127318f8Jon Mann mEnv.state.stack.changeRoot(TestProvidersAccess.HOME); 238e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 2392e81db6f2030ec6c8dd758c3020ce5db8363bf25Garfield Tan mEnv.mockProviders.get(TestProvidersAccess.HOME.authority) 240e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan .setNextChildDocumentsReturns(TestEnv.FILE_APK, TestEnv.FILE_GIF); 241e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 242e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan TestEventHandler<Model.Update> listener = new TestEventHandler<>(); 243e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan mEnv.model.addUpdateListener(listener::accept); 244e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 245e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan mHandler.loadDocumentsForCurrentStack(); 246e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan 247e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan assertTrue(listener.getLastValue().hasException()); 248e967033315ed64bca8c89d601d187fd12754f1fbGarfield Tan } 249739f94ba0dc9be264d9596dac551fd63082d2fddSteve McKay} 250