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