#![allow(deprecated)]
use tempfile::TempDir;
use tree_type::tree_type;
tree_type! {
ChildrenTestRoot {
projects/ {
[project_id: String]/ as ProjectDir {
src/
config("config.toml")
}
}
}
}
#[test]
fn test_children_method() {
let tempdir = TempDir::new().unwrap();
let root = ChildrenTestRoot::new(tempdir.path()).unwrap();
std::fs::create_dir_all(tempdir.path().join("projects/project1")).unwrap();
std::fs::create_dir_all(tempdir.path().join("projects/project2")).unwrap();
let projects = root.projects();
let children: Vec<_> = projects
.children()
.unwrap()
.collect::<Result<Vec<_>, _>>()
.unwrap();
assert_eq!(children.len(), 2);
}
#[test]
fn test_children_method_exists() {
let tempdir = TempDir::new().unwrap();
let root = ChildrenTestRoot::new(tempdir.path()).unwrap();
std::fs::create_dir_all(tempdir.path().join("projects")).unwrap();
let projects = root.projects();
let children_result = projects.children();
assert!(children_result.is_ok());
let children: Vec<_> = children_result.unwrap().collect();
assert_eq!(children.len(), 0);
}
#[test]
fn test_children_method_with_directories() {
let tempdir = TempDir::new().unwrap();
let root = ChildrenTestRoot::new(tempdir.path()).unwrap();
let projects_path = tempdir.path().join("projects");
std::fs::create_dir_all(&projects_path).unwrap();
std::fs::create_dir_all(projects_path.join("project-1")).unwrap();
std::fs::create_dir_all(projects_path.join("project-2")).unwrap();
std::fs::create_dir_all(projects_path.join("project-3")).unwrap();
std::fs::write(projects_path.join("readme.txt"), "test").unwrap();
let projects = root.projects();
let children_result = projects.children();
assert!(children_result.is_ok());
let children: Result<Vec<_>, _> = children_result.unwrap().collect();
assert!(children.is_ok());
let children = children.unwrap();
assert_eq!(children.len(), 3);
let mut project_names: Vec<String> =
children.iter().map(|project| project.file_name()).collect();
project_names.sort();
assert_eq!(project_names, vec!["project-1", "project-2", "project-3"]);
}
#[test]
fn test_children_method_error_handling() {
let tempdir = TempDir::new().unwrap();
let root = ChildrenTestRoot::new(tempdir.path()).unwrap();
let projects = root.projects();
let children_result = projects.children();
assert!(children_result.is_err());
}
#[test]
fn test_children_method_with_mixed_entries() {
let tempdir = TempDir::new().unwrap();
let root = ChildrenTestRoot::new(tempdir.path()).unwrap();
let projects_path = tempdir.path().join("projects");
std::fs::create_dir_all(&projects_path).unwrap();
std::fs::create_dir_all(projects_path.join("valid-project")).unwrap();
std::fs::write(projects_path.join("file1.txt"), "content").unwrap();
std::fs::write(projects_path.join("file2.md"), "content").unwrap();
let projects = root.projects();
let children_result = projects.children();
assert!(children_result.is_ok());
let children: Result<Vec<_>, _> = children_result.unwrap().collect();
assert!(children.is_ok());
let children = children.unwrap();
assert_eq!(children.len(), 1);
assert_eq!(children[0].file_name(), "valid-project");
}