#[cfg(test)]
mod tests {
- use super::*;
- use std::path::PathBuf;
-
- fn setup() -> Strategy {
- Strategy {}
- }
-
- mod is_tests {
- use super::*;
-
- #[test]
- fn identifies_layout_file() {
- let strategy = setup();
- let path = PathBuf::from("_layout.html");
- assert!(strategy.is(&path));
- }
+ use std::fs::create_dir_all;
- #[test]
- fn rejects_non_layout_html() {
- let strategy = setup();
- let path = PathBuf::from("regular.html");
- assert!(!strategy.is(&path));
- }
+ use super::*;
- #[test]
- fn rejects_layout_with_different_extension() {
- let strategy = setup();
- let path = PathBuf::from("_layout.txt");
- assert!(!strategy.is(&path));
- }
+ use test_utilities::*;
- #[test]
- fn rejects_layout_with_prefix() {
- let strategy = setup();
- let path = PathBuf::from("prefix_layout.html");
- assert!(!strategy.is(&path));
- }
+ #[test]
+ fn identifies_layout_file() {
+ let test_dir = setup_test_dir();
+ create_test_file(&test_dir.join("_layout.html"), "");
+ let strategy = Strategy {};
+ assert!(strategy.is(&test_dir.join("_layout.html")));
+ }
- #[test]
- fn rejects_directory_named_layout() {
- let strategy = setup();
- let path = PathBuf::from("tests/fixtures");
+ #[test]
+ fn rejects_non_layout_html() {
+ let test_dir = setup_test_dir();
+ create_test_file(&test_dir.join("regular.html"), "");
+ let strategy = Strategy {};
+ assert!(!strategy.is(&test_dir.join("regular.html")));
+ }
- assert!(!strategy.is(&path));
- }
+ #[test]
+ fn rejects_layout_with_different_extension() {
+ let test_dir = setup_test_dir();
+ create_test_file(&test_dir.join("_layout.txt"), "");
+ let strategy = Strategy {};
+ assert!(!strategy.is(&test_dir.join("_layout.txt")));
}
- mod identify_tests {
- use super::*;
+ #[test]
+ fn rejects_layout_with_prefix() {
+ let test_dir = setup_test_dir();
+ create_test_file(&test_dir.join("prefix_layout.txt"), "");
+ let strategy = Strategy {};
+ assert!(!strategy.is(&test_dir.join("prefix_layout.txt")));
+ }
- #[test]
- fn returns_layout_type() {
- let strategy = setup();
- assert!(matches!(strategy.identify(), FileType::Layout));
- }
+ #[test]
+ fn rejects_directory_named_layout() {
+ let test_dir = setup_test_dir();
+ let layout_dir = test_dir.join("_layout");
+ create_dir_all(&layout_dir)
+ .expect("Could not create _layout test directory");
+ let strategy = Strategy {};
+ assert!(!strategy.is(&layout_dir));
}
- mod can_handle_tests {
- use super::*;
+ #[test]
+ fn identifies_layout_type() {
+ let strategy = Strategy {};
+ assert!(matches!(strategy.identify(), FileType::Layout));
+ }
- #[test]
- fn handles_layout_type() {
- let strategy = setup();
- assert!(strategy.can_handle(&FileType::Layout));
- }
+ #[test]
+ fn handles_layout_type() {
+ let strategy = Strategy {};
+ assert!(strategy.can_handle(&FileType::Layout));
+ }
- #[test]
- fn rejects_non_layout_types() {
- let strategy = setup();
- assert!(!strategy.can_handle(&FileType::File));
- assert!(!strategy.can_handle(&FileType::Gemini));
- assert!(!strategy.can_handle(&FileType::Unknown));
- }
+ #[test]
+ fn rejects_non_layout_types() {
+ let strategy = Strategy {};
+ assert!(!strategy.can_handle(&FileType::File));
+ assert!(!strategy.can_handle(&FileType::Gemini));
+ assert!(!strategy.can_handle(&FileType::Unknown));
}
- mod handle_methods {
- use super::*;
-
- #[test]
- fn handle_html_does_nothing() {
- let strategy = setup();
- let file = File {
- path: PathBuf::from("test.html"),
- file_type: FileType::Layout,
- };
-
- // Should not panic
- strategy.handle_html(
- &PathBuf::from("source"),
- &PathBuf::from("dest"),
- &file,
- "layout content"
- );
- }
+ #[test]
+ fn handle_html_does_nothing() {
+ let strategy = Strategy {};
+ let file = File {
+ path: PathBuf::from("_layout.html"),
+ file_type: FileType::Layout,
+ };
+
+ strategy.handle_html(
+ &PathBuf::from("source"),
+ &PathBuf::from("dest"),
+ &file,
+ "layout content"
+ );
+ }
- #[test]
- fn handle_gemini_does_nothing() {
- let strategy = setup();
- let file = File {
- path: PathBuf::from("test.gmi"),
- file_type: FileType::Layout,
- };
-
- // Should not panic
- strategy.handle_gemini(
- &PathBuf::from("source"),
- &PathBuf::from("dest"),
- &file
- );
- }
+ #[test]
+ fn handle_gemini_does_nothing() {
+ let strategy = Strategy {};
+ let file = File {
+ path: PathBuf::from("test.gmi"),
+ file_type: FileType::Layout,
+ };
+
+ // Should not panic
+ strategy.handle_gemini(
+ &PathBuf::from("source"),
+ &PathBuf::from("dest"),
+ &file
+ );
}
}