]> git.r.bdr.sh - rbdr/blog/blobdiff - src/generator/static_files.rs
Add tests for generators
[rbdr/blog] / src / generator / static_files.rs
index b4ec9fdbae0dc2162d0267a509aa83a0cc514407..449dcc4493b62aa88b00539fdaddcec5d188e20f 100644 (file)
@@ -9,3 +9,63 @@ pub fn generate(source: &Path, _: &Path, target: &Path, _: &Context) -> Result<(
     }
     Ok(())
 }
     }
     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());
+    }
+}