Move ContentSettingsFragment.isValidPath to helpers and add unit test for it.

This commit is contained in:
Alireza Tofighi 2021-05-21 20:21:58 +04:30
parent 82f43ac6a6
commit fa2b11b768
3 changed files with 57 additions and 10 deletions

View file

@ -26,6 +26,7 @@ import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.localization.ContentCountry; import org.schabi.newpipe.extractor.localization.ContentCountry;
import org.schabi.newpipe.extractor.localization.Localization; import org.schabi.newpipe.extractor.localization.Localization;
import org.schabi.newpipe.util.FilePickerActivityHelper; import org.schabi.newpipe.util.FilePickerActivityHelper;
import org.schabi.newpipe.util.FilePathUtils;
import org.schabi.newpipe.util.ZipHelper; import org.schabi.newpipe.util.ZipHelper;
import java.io.File; import java.io.File;
@ -67,7 +68,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
.putExtra(FilePickerActivityHelper.EXTRA_MODE, .putExtra(FilePickerActivityHelper.EXTRA_MODE,
FilePickerActivityHelper.MODE_FILE); FilePickerActivityHelper.MODE_FILE);
final String path = defaultPreferences.getString(importExportDataPathKey, ""); final String path = defaultPreferences.getString(importExportDataPathKey, "");
if (isValidPath(path)) { if (FilePathUtils.isValidDirectoryPath(path)) {
i.putExtra(FilePickerActivityHelper.EXTRA_START_PATH, path); i.putExtra(FilePickerActivityHelper.EXTRA_START_PATH, path);
} }
startActivityForResult(i, REQUEST_IMPORT_PATH); startActivityForResult(i, REQUEST_IMPORT_PATH);
@ -82,7 +83,7 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
.putExtra(FilePickerActivityHelper.EXTRA_MODE, .putExtra(FilePickerActivityHelper.EXTRA_MODE,
FilePickerActivityHelper.MODE_DIR); FilePickerActivityHelper.MODE_DIR);
final String path = defaultPreferences.getString(importExportDataPathKey, ""); final String path = defaultPreferences.getString(importExportDataPathKey, "");
if (isValidPath(path)) { if (FilePathUtils.isValidDirectoryPath(path)) {
i.putExtra(FilePickerActivityHelper.EXTRA_START_PATH, path); i.putExtra(FilePickerActivityHelper.EXTRA_START_PATH, path);
} }
startActivityForResult(i, REQUEST_EXPORT_PATH); startActivityForResult(i, REQUEST_EXPORT_PATH);
@ -254,14 +255,6 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
} }
} }
private boolean isValidPath(final String path) {
if (path == null || path.isEmpty()) {
return false;
}
final File file = new File(path);
return file.exists() && file.isDirectory();
}
private void setImportExportDataPath(final File file) { private void setImportExportDataPath(final File file) {
final String directoryPath; final String directoryPath;
if (!file.isDirectory()) { if (!file.isDirectory()) {

View file

@ -0,0 +1,22 @@
package org.schabi.newpipe.util;
import java.io.File;
public final class FilePathUtils {
private FilePathUtils() { }
/**
* Check that the path is a valid directory path and it exists.
*
* @param path full path of directory,
* @return is path valid or not
*/
public static boolean isValidDirectoryPath(final String path) {
if (path == null || path.isEmpty()) {
return false;
}
final File file = new File(path);
return file.exists() && file.isDirectory();
}
}

View file

@ -0,0 +1,32 @@
package org.schabi.newpipe.util;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class FilePathHelperTest {
@Test
public void testIsValidDirectoryPath() throws IOException {
// path that exists
final File dir1 = Files.createTempDirectory("dir1").toFile();
assertTrue(FilePathUtils.isValidDirectoryPath(dir1.getAbsolutePath()));
// a directory in above path that exists
final File subDir = Files.createDirectory(dir1.toPath().resolve("subdir")).toFile();
assertTrue(FilePathUtils.isValidDirectoryPath(subDir.getAbsolutePath()));
// a directory in above path that doesn't exist
assertFalse(FilePathUtils.isValidDirectoryPath(dir1.toPath().resolve("not-exists-subdir").
toFile().getAbsolutePath()));
// file is not a valid direcotry path
final File tempFile = Files.createFile(dir1.toPath().resolve("simple_file")).toFile();
assertFalse(FilePathUtils.isValidDirectoryPath(tempFile.getAbsolutePath()));
}
}