]> git.r.bdr.sh - rbdr/blog/blobdiff - src/generator/static_files.rs
Address more of the formatter comments
[rbdr/blog] / src / generator / static_files.rs
index 8c55de348b654cf9f53fc0b8c46934ec7893f687..ae676a1e43094c94367403817dbb0a9290dfc9a1 100644 (file)
@@ -1,16 +1,71 @@
-use crate::template::TemplateContext;
+use crate::template::Context;
 use crate::utils::recursively_copy;
 use std::io::Result;
 use crate::utils::recursively_copy;
 use std::io::Result;
-use std::path::PathBuf;
-
-pub fn generate(
-    source: &PathBuf,
-    _: &PathBuf,
-    target: &PathBuf,
-    _: &TemplateContext,
-) -> Result<()> {
+use std::path::Path;
+
+pub fn generate(source: &Path, _: &Path, target: &Path, _: &Context) -> Result<()> {
     if source.exists() {
         return recursively_copy(source, target);
     }
     Ok(())
 }
     if source.exists() {
         return recursively_copy(source, target);
     }
     Ok(())
 }
+
+#[cfg(test)]
+mod tests {
+    use std::collections::HashMap;
+    use std::fs::create_dir_all;
+
+    use super::*;
+
+    use test_utilities::*;
+
+    #[test]
+    fn test_copies_files() {
+        let test_dir = setup_test_dir();
+        let static_dir = test_dir.join("static");
+        let template_dir = test_dir.join("templates");
+        let output_dir = test_dir.join("output");
+
+        create_dir_all(&static_dir).expect("Could not create static directory");
+        create_dir_all(&output_dir).expect("Could not create output directory");
+        create_test_file(&static_dir.join("test.jpg"), "Cool hat");
+
+        let context = HashMap::new();
+
+        generate(&static_dir, &template_dir, &output_dir, &context).expect("Generate failed");
+
+        assert_file_contents(&output_dir.join("test.jpg"), "Cool hat");
+    }
+
+    #[test]
+    fn test_creates_directories_if_they_do_not_exist() {
+        let test_dir = setup_test_dir();
+        let static_dir = test_dir.join("static");
+        let template_dir = test_dir.join("templates");
+        let output_dir = test_dir.join("output");
+
+        create_dir_all(&static_dir).expect("Could not create static directory");
+        create_dir_all(static_dir.join("nested")).expect("Could not create output directory");
+        create_test_file(&static_dir.join("nested/test.mov"), "Cool hats, multiple.");
+
+        let context = HashMap::new();
+
+        generate(&static_dir, &template_dir, &output_dir, &context).expect("Generate failed");
+
+        assert_file_contents(&output_dir.join("nested/test.mov"), "Cool hats, multiple.");
+    }
+
+    #[test]
+    fn test_it_does_not_fail_if_source_directory_does_not_exist() {
+        let test_dir = setup_test_dir();
+        let static_dir = test_dir.join("static");
+        let template_dir = test_dir.join("templates");
+        let output_dir = test_dir.join("output");
+
+        let context = HashMap::new();
+
+        let result = generate(&static_dir, &template_dir, &output_dir, &context);
+
+        assert!(result.is_ok());
+    }
+}