package jdrivesync;
import jdrivesync.cli.FileNamePatterns;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.Optional;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public class ITIgnoreFiles extends BaseClass {
private static final String TESTDATA = ITBasicUpSync.class.getSimpleName();
@BeforeClass
public static void beforeClass() {
BaseClass.beforeClass();
}
@Before
public void before() throws IOException {
super.beforeEachTest(TESTDATA, driveFactory);
createTestData(TESTDATA);
}
private void createTestData(String name) throws IOException {
deleteDirectorySubtree(Paths.get(basePathTestData(), name));
Files.createDirectory(Paths.get(basePathTestData(), name));
Files.write(Paths.get(basePathTestData(), name, "movie.mov"), Arrays.asList("movie"), Charset.defaultCharset(), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
Files.write(Paths.get(basePathTestData(), name, "text.txt"), Arrays.asList("text"), Charset.defaultCharset(), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
Files.write(Paths.get(basePathTestData(), name, ".hidden.txt"), Arrays.asList(".hidden"), Charset.defaultCharset(), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
Files.createDirectory(Paths.get(basePathTestData(), name, "folder"));
Files.write(Paths.get(basePathTestData(), name, "folder", "image1.jpg"), Arrays.asList("image1"), Charset.defaultCharset(), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
Files.write(Paths.get(basePathTestData(), name, "folder", "image2.tiff"), Arrays.asList("image2"), Charset.defaultCharset(), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
}
@Test
public void testSimpleSync() {
App app = new App();
app.sync(options);
sleep();
assertThat(googleDriveAdapter.listAll().size(), is(6));
assertThat(googleDriveAdapter.search(Optional.of("movie.mov")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("text.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of(".hidden.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("folder")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("image1.jpg")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("image2.tiff")).size(), is(1));
}
@Test
public void testNoImagesAndNoMovies() {
options.setIgnoreFiles(FileNamePatterns.create(Arrays.asList("*.jpg", "*.tiff", "*.mov")));
App app = new App();
app.sync(options);
sleep();
assertThat(googleDriveAdapter.listAll().size(), is(3));
assertThat(googleDriveAdapter.search(Optional.of("movie.mov")).size(), is(0));
assertThat(googleDriveAdapter.search(Optional.of("text.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of(".hidden.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("folder")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("image1.jpg")).size(), is(0));
assertThat(googleDriveAdapter.search(Optional.of("image2.tiff")).size(), is(0));
}
@Test
public void testNoHiddenFiles() {
options.setIgnoreFiles(FileNamePatterns.create(Arrays.asList(".*")));
App app = new App();
app.sync(options);
sleep();
assertThat(googleDriveAdapter.listAll().size(), is(5));
assertThat(googleDriveAdapter.search(Optional.of("movie.mov")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("text.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of(".hidden.txt")).size(), is(0));
assertThat(googleDriveAdapter.search(Optional.of("folder")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("image1.jpg")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("image2.tiff")).size(), is(1));
}
@Test
public void testNoFilesUnderFolder() {
options.setIgnoreFiles(FileNamePatterns.create(Arrays.asList("folder/**")));
App app = new App();
app.sync(options);
sleep();
assertThat(googleDriveAdapter.listAll().size(), is(4));
assertThat(googleDriveAdapter.search(Optional.of("movie.mov")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("text.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of(".hidden.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("folder")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("image1.jpg")).size(), is(0));
assertThat(googleDriveAdapter.search(Optional.of("image2.tiff")).size(), is(0));
}
@Test
public void testNoJpgFiles() {
options.setIgnoreFiles(FileNamePatterns.create(Arrays.asList("**/*.jpg")));
App app = new App();
app.sync(options);
sleep();
assertThat(googleDriveAdapter.listAll().size(), is(5));
assertThat(googleDriveAdapter.search(Optional.of("movie.mov")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("text.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of(".hidden.txt")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("folder")).size(), is(1));
assertThat(googleDriveAdapter.search(Optional.of("image1.jpg")).size(), is(0));
assertThat(googleDriveAdapter.search(Optional.of("image2.tiff")).size(), is(1));
}
}