10950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska/* 20950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * Copyright (C) 2016 The Android Open Source Project 30950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * 40950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * Licensed under the Apache License, Version 2.0 (the "License"); 50950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * you may not use this file except in compliance with the License. 60950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * You may obtain a copy of the License at 70950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * 80950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * http://www.apache.org/licenses/LICENSE-2.0 90950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * 100950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * Unless required by applicable law or agreed to in writing, software 110950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * distributed under the License is distributed on an "AS IS" BASIS, 120950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * See the License for the specific language governing permissions and 140950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska * limitations under the License. 150950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska */ 160950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 170950df196fc5a85910e18510eb8dea2a9f233312Aga Wronskapackage com.android.documentsui; 180950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 190950df196fc5a85910e18510eb8dea2a9f233312Aga Wronskaimport android.test.suitebuilder.annotation.LargeTest; 20f346796b88ec0c9de6adbb2924bcd4fa4f45f933Steve McKayimport android.test.suitebuilder.annotation.Suppress; 210950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 220950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska@LargeTest 23c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewskipublic class RenameDocumentUiTest extends ActivityTest<FilesActivity> { 240950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 250950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska private final String newName = "kitties.log"; 260950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 27c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski public RenameDocumentUiTest() { 28c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski super(FilesActivity.class); 29c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski } 300950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 310950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska @Override 320950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void setUp() throws Exception { 330950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska super.setUp(); 34c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski initTestFiles(); 350950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 360950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 370950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testRenameEnabled_SingleSelection() throws Exception { 38b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileName1); 39b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 40b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.assertMenuEnabled(R.string.menu_rename, true); 410950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 420950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska // Dismiss more options window 43c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski device.pressBack(); 440950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 450950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 460950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testNoRenameSupport_SingleSelection() throws Exception { 47b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileNameNoRename); 48b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 49b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.assertMenuEnabled(R.string.menu_rename, false); 500950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 510950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska // Dismiss more options window 52c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski device.pressBack(); 530950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 540950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 550950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testOneHasRenameSupport_MultipleSelection() throws Exception { 56b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileName1); 57b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileNameNoRename); 58b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 59b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.assertMenuEnabled(R.string.menu_rename, false); 600950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 610950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska // Dismiss more options window 62c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski device.pressBack(); 630950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 640950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 650950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testRenameDisabled_MultipleSelection() throws Exception { 66b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileName1); 67b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileName2); 68b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 69b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.assertMenuEnabled(R.string.menu_rename, false); 700950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 710950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska // Dismiss more options window 72c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski device.pressBack(); 730950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 740950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 75f346796b88ec0c9de6adbb2924bcd4fa4f45f933Steve McKay @Suppress 760950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testRenameFile_OkButton() throws Exception { 77b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileName1); 78b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 79b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.menuRename().click(); 80b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.setDialogText(newName); 81c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski 82c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski device.waitForIdle(TIMEOUT); 837a3b811122b6db0ac103630c2b7acde1d9f4c128Steve McKay bots.main.findDialogOkButton().click(); 84c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski device.waitForIdle(TIMEOUT); 85c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski 86b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsAbsent(fileName1); 87b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsPresent(newName); 88b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsCount(4); 890950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 900950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 910950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testRenameFile_Enter() throws Exception { 92b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileName1); 93b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 94b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.menuRename().click(); 95b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.setDialogText(newName); 960950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 97b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.keyboard.pressEnter(); 980950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 99b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsAbsent(fileName1); 100b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsPresent(newName); 101b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsCount(4); 1020950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 1030950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 104f346796b88ec0c9de6adbb2924bcd4fa4f45f933Steve McKay @Suppress 1050950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testRenameFile_Cancel() throws Exception { 106b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileName1); 107b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 108b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.menuRename().click(); 109b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.setDialogText(newName); 110c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski 111c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski device.waitForIdle(TIMEOUT); 1127a3b811122b6db0ac103630c2b7acde1d9f4c128Steve McKay bots.main.findDialogCancelButton().click(); 113c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski device.waitForIdle(TIMEOUT); 114c7b832202a8f1f91e378e255e61c4aa703f53394Tomasz Mikolajewski 115b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsPresent(fileName1); 116b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsAbsent(newName); 117b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsCount(4); 1180950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 1190950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 1200950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testRenameDir() throws Exception { 1210950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska String oldName = "Dir1"; 1220950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska String newName = "Dir123"; 1230950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 124b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(oldName); 125b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 126b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.menuRename().click(); 127b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.setDialogText(newName); 1280950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 129b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.keyboard.pressEnter(); 1300950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 131b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsAbsent(oldName); 132b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsPresent(newName); 133b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsCount(4); 1340950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 1350950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska 1360950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska public void testRename_NameExists() throws Exception { 1370950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska // Check that document with the new name exists 138b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsPresent(fileName2); 139b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.selectDocument(fileName1); 140b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.openOverflowMenu(); 141b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.menuRename().click(); 142b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.main.setDialogText(fileName2); 143b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay 144b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.keyboard.pressEnter(); 145b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay 146b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertSnackbar(R.string.rename_error); 147b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsPresent(fileName1); 148b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsPresent(fileName2); 149b9a20d10c948cf111b70981e08233ea97323fe6cSteve McKay bots.directory.assertDocumentsCount(4); 1500950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska } 1510950df196fc5a85910e18510eb8dea2a9f233312Aga Wronska} 152