7 use crate::template::Context;
11 type Generator = fn(&Path, &Path, &Path, &Context) -> Result<()>;
14 static_directory: &Path,
15 template_directory: &Path,
16 output_directory: &Path,
19 let generators = available_generators();
20 let context = Post::to_template_context(posts);
21 for generator in generators {
32 fn available_generators() -> Vec<Generator> {
34 static_files::generate,
35 // These three are actually the same. Can generalize, don't know how in rust yet.
44 use std::fs::create_dir_all;
48 use crate::metadata::Metadata;
49 use crate::post::Post;
51 use test_utilities::*;
55 let test_dir = setup_test_dir();
56 let static_dir = test_dir.join("static");
57 let template_dir = test_dir.join("templates");
58 let output_dir = test_dir.join("output");
60 create_dir_all(&static_dir).expect("Could not create static directory");
61 create_dir_all(&template_dir).expect("Could not create template directory");
62 create_dir_all(&output_dir).expect("Could not create output directory");
63 create_test_file(&static_dir.join("file.txt"), "wow");
65 &template_dir.join("index.html"),
73 &template_dir.join("feed.xml"),
81 &template_dir.join("index.txt"),
91 id: "1736035200000".to_string(),
92 created_on: 1_736_035_200_000,
95 html: "<p>Generatorial</p>".to_string(),
96 raw: "electricity generator".to_string(),
100 id: "1736045200000".to_string(),
101 created_on: 1_736_045_200_000,
104 html: "<p>Generation</p>".to_string(),
105 raw: "kero kero".to_string(),
109 generate(&static_dir, &template_dir, &output_dir, &posts).expect("Generate failed");
111 assert_file_contents(&output_dir.join("file.txt"), "wow");
112 assert_file_contents(
113 &output_dir.join("index.html"),
120 assert_file_contents(
121 &output_dir.join("feed.xml"),
131 fn test_fails_if_directories_do_not_exist() {
132 let test_dir = setup_test_dir();
133 let static_dir = test_dir.join("static");
134 let template_dir = test_dir.join("templates");
135 let output_dir = test_dir.join("output");
138 let result = generate(&static_dir, &template_dir, &output_dir, &posts);
140 assert!(result.is_err());
144 fn test_fails_if_a_generator_fails() {
145 let test_dir = setup_test_dir();
146 let static_dir = test_dir.join("static");
147 let template_dir = test_dir.join("templates");
148 let output_dir = test_dir.join("output");
150 create_dir_all(&static_dir).expect("Could not create static directory");
151 create_dir_all(&template_dir).expect("Could not create template directory");
152 create_dir_all(&output_dir).expect("Could not create output directory");
153 create_test_file(&static_dir.join("file.txt"), "wow");
155 &template_dir.join("index.html"),
165 id: "1736035200000".to_string(),
166 created_on: 1_736_035_200_000,
169 html: "<p>Generatorial</p>".to_string(),
170 raw: "electricity generator".to_string(),
174 id: "1736045200000".to_string(),
175 created_on: 1_736_045_200_000,
178 html: "<p>Generation</p>".to_string(),
179 raw: "kero kero".to_string(),
183 let result = generate(&static_dir, &template_dir, &output_dir, &posts);
185 assert!(result.is_err());