#![cfg(test)]
use super::Files;
use assert_fs::prelude::*;
use itertools::Itertools;
#[test]
fn test_move_and_symlink() {
let temp: assert_fs::TempDir = assert_fs::TempDir::new().unwrap();
let home_dir = temp.child("home");
let file_dir = temp.child("files");
let file_manager = Files::init(home_dir.path().to_owned(), file_dir.path().to_owned());
home_dir.create_dir_all().unwrap();
file_dir.create_dir_all().unwrap();
let original_files = [
home_dir.child("foo"),
home_dir.child("bar"),
home_dir.child("baz"),
];
let moved_files = [
file_dir.child("foo"),
file_dir.child("bar"),
file_dir.child("baz"),
];
for file in &original_files {
file.touch().unwrap();
}
for file in &moved_files {
assert!(!file.exists());
}
for file in &original_files {
assert!(file.exists());
}
let relative_paths = original_files
.iter()
.map(|file| file.path().strip_prefix(home_dir.path()).unwrap())
.collect_vec();
file_manager.move_and_symlink(&relative_paths).unwrap();
for file in &moved_files {
assert!(file.exists());
}
for file in &original_files {
assert!(file.read_link().is_ok());
}
}
#[test]
fn test_remove_and_restore() {
let temp: assert_fs::TempDir = assert_fs::TempDir::new().unwrap();
let home_dir = temp.child("home");
let file_dir = temp.child("files");
let file_manager = Files::init(home_dir.path().to_owned(), file_dir.path().to_owned());
home_dir.create_dir_all().unwrap();
file_dir.create_dir_all().unwrap();
let original_files = [
home_dir.child("foo"),
home_dir.child("bar"),
home_dir.child("baz"),
];
let moved_files = [
file_dir.child("foo"),
file_dir.child("bar"),
file_dir.child("baz"),
];
for file in &original_files {
file.touch().unwrap();
}
let relative_paths = original_files
.iter()
.map(|file| file.path().strip_prefix(home_dir.path()).unwrap())
.collect_vec();
file_manager.move_and_symlink(&relative_paths).unwrap();
for file in &moved_files {
assert!(file.exists());
}
for file in &original_files {
assert!(file.exists());
}
file_manager.remove_and_restore(&relative_paths).unwrap();
for file in &moved_files {
assert!(!file.exists());
}
for file in &original_files {
assert!(file.exists());
}
}