Home | History | Annotate | Download | only in services
      1 /*
      2  * Copyright (C) 2015 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.documentsui.services;
     18 
     19 import static com.google.common.collect.Lists.newArrayList;
     20 
     21 import android.net.Uri;
     22 import android.provider.DocumentsContract.Document;
     23 import android.provider.DocumentsContract;
     24 import android.test.suitebuilder.annotation.MediumTest;
     25 
     26 import com.android.documentsui.model.DocumentInfo;
     27 import com.android.documentsui.model.DocumentStack;
     28 
     29 import java.util.List;
     30 
     31 @MediumTest
     32 public class MoveJobTest extends AbstractCopyJobTest<MoveJob> {
     33 
     34     public void testMoveFiles() throws Exception {
     35         runCopyFilesTest();
     36 
     37         mDocs.assertChildCount(mSrcRoot, 0);
     38     }
     39 
     40     public void testMoveVirtualTypedFile() throws Exception {
     41         mDocs.createFolder(mSrcRoot, "hello");
     42         Uri testFile = mDocs.createVirtualFile(
     43                 mSrcRoot, "/hello/virtual.sth", "virtual/mime-type",
     44                 FRUITY_BYTES, "application/pdf", "text/html");
     45         createJob(newArrayList(testFile)).run();
     46 
     47         mJobListener.waitForFinished();
     48 
     49         // Should have failed, source not deleted. Moving by bytes for virtual files
     50         // is not supported.
     51         mDocs.assertChildCount(mDestRoot, 0);
     52         mDocs.assertChildCount(mSrcRoot, 1);
     53     }
     54 
     55     public void testMoveVirtualNonTypedFile() throws Exception {
     56         runCopyVirtualNonTypedFileTest();
     57 
     58         // Should have failed, source not deleted.
     59         mDocs.assertChildCount(mSrcRoot, 1);
     60     }
     61 
     62     public void testMove_BackendSideVirtualTypedFile_Fallback() throws Exception {
     63         Uri testFile = mDocs.createDocumentWithFlags(
     64                 mSrcRoot.documentId, "virtual/mime-type", "tokyo.sth",
     65                 Document.FLAG_VIRTUAL_DOCUMENT | Document.FLAG_SUPPORTS_COPY
     66                         | Document.FLAG_SUPPORTS_MOVE, "application/pdf");
     67 
     68         createJob(newArrayList(testFile)).run();
     69         mJobListener.waitForFinished();
     70 
     71         // Should have failed, source not deleted. Moving by bytes for virtual files
     72         // is not supported.
     73         mDocs.assertChildCount(mDestRoot, 0);
     74         mDocs.assertChildCount(mSrcRoot, 1);
     75     }
     76 
     77     public void testMoveEmptyDir() throws Exception {
     78         runCopyEmptyDirTest();
     79 
     80         mDocs.assertChildCount(mSrcRoot, 0);
     81     }
     82 
     83     public void testMoveDirRecursively() throws Exception {
     84         runCopyDirRecursivelyTest();
     85 
     86         mDocs.assertChildCount(mSrcRoot, 0);
     87     }
     88 
     89     public void testNoMoveDirToSelf() throws Exception {
     90         runNoCopyDirToSelfTest();
     91 
     92         // should have failed, source not deleted
     93         mDocs.assertChildCount(mSrcRoot, 1);
     94     }
     95 
     96     public void testNoMoveDirToDescendent() throws Exception {
     97         runNoCopyDirToDescendentTest();
     98 
     99         // should have failed, source not deleted
    100         mDocs.assertChildCount(mSrcRoot, 1);
    101     }
    102 
    103     public void testMoveFileWithReadErrors() throws Exception {
    104         runCopyFileWithReadErrorsTest();
    105 
    106         // should have failed, source not deleted
    107         mDocs.assertChildCount(mSrcRoot, 1);
    108     }
    109 
    110     // TODO: Add test cases for moving when multi-parented.
    111 
    112     @Override
    113     MoveJob createJob(List<DocumentInfo> srcs, DocumentInfo srcParent, DocumentStack stack)
    114             throws Exception {
    115         return new MoveJob(
    116                 mContext, mContext, mJobListener, FileOperations.createJobId(), stack, srcs,
    117                 srcParent);
    118     }
    119 }
    120