aboutsummaryrefslogtreecommitdiff
path: root/src/command/status/blog_status.rs
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-05-16 22:05:55 +0200
committerRuben Beltran del Rio <git@r.bdr.sh>2025-05-16 22:05:55 +0200
commit0065feab2673862d168a6271e680c6115a7e9a73 (patch)
tree103085472e213d71850ebd9c730ba9e08f929c0e /src/command/status/blog_status.rs
parent56d3e03f4812b872eccc9f0e1800a4fd978d7367 (diff)
Add tests for blog_statusrbdr-add-tests-and-gema-texto
Diffstat (limited to 'src/command/status/blog_status.rs')
-rw-r--r--src/command/status/blog_status.rs84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/command/status/blog_status.rs b/src/command/status/blog_status.rs
index 3f42f32..32881d0 100644
--- a/src/command/status/blog_status.rs
+++ b/src/command/status/blog_status.rs
@@ -29,3 +29,87 @@ fn count_entries(path: &PathBuf) -> String {
Err(_) => "0".to_string(),
}
}
+
+#[cfg(test)]
+mod tests {
+ use std::fs::create_dir_all;
+ use std::path::PathBuf;
+
+ use crate::configuration::Configuration;
+
+ use test_utilities::*;
+
+ use super::*;
+
+ #[test]
+ fn count_entries_counts_the_number_of_entries() {
+ let test_dir = setup_test_dir();
+
+ assert_eq!(count_entries(&test_dir), "0");
+
+ let first_post_dir = test_dir.join("1736035200055");
+ create_dir_all(&first_post_dir).expect("Could not create first post dir");
+ assert_eq!(count_entries(&test_dir), "1");
+
+ let second_post_dir = test_dir.join("1736035200058");
+ create_dir_all(&second_post_dir).expect("Could not create second post dir");
+ assert_eq!(count_entries(&test_dir), "2");
+
+ cleanup_test_dir(&test_dir);
+ }
+
+ #[test]
+ fn count_entries_defaults_to_zero_in_case_of_error() {
+ let test_dir = PathBuf::from("/ohnokrillin");
+ assert_eq!(count_entries(&test_dir), "0");
+ }
+
+ #[test]
+ fn blog_status_counts_the_number_of_entries_in_blog_and_archive() {
+ let test_dir = setup_test_dir();
+ let posts_dir = test_dir.join("blog");
+ let archive_dir = test_dir.join("archive");
+
+ create_dir_all(&posts_dir).expect("Could not create blog dir");
+ create_dir_all(posts_dir.join("0")).expect("Could not create blog post 0 dir");
+ create_dir_all(posts_dir.join("1")).expect("Could not create blog post 1 dir");
+ create_dir_all(posts_dir.join("2")).expect("Could not create blog post 2 dir");
+
+ create_dir_all(&archive_dir).expect("Could not create blog dir");
+ create_dir_all(archive_dir.join("0")).expect("Could not create blog post 0 dir");
+ create_dir_all(archive_dir.join("1")).expect("Could not create blog post 1 dir");
+ create_dir_all(archive_dir.join("2")).expect("Could not create blog post 2 dir");
+ create_dir_all(archive_dir.join("3")).expect("Could not create blog post 3 dir");
+ create_dir_all(archive_dir.join("4")).expect("Could not create blog post 4 dir");
+ create_dir_all(archive_dir.join("5")).expect("Could not create blog post 5 dir");
+
+ let mut configuration = Configuration::new().unwrap();
+ configuration.archive_directory = archive_dir.clone();
+ configuration.posts_directory = posts_dir.clone();
+
+ if let Ok(output) = status(&configuration) {
+ assert!(output.contains("blog: 3"));
+ assert!(output.contains("archive: 6"));
+ } else {
+ panic!("Could not generate status output.");
+ }
+ }
+
+ #[test]
+ fn blog_status_prints_zero_if_directories_do_not_exist() {
+ let test_dir = setup_test_dir();
+ let posts_dir = test_dir.join("blog");
+ let archive_dir = test_dir.join("archive");
+
+ let mut configuration = Configuration::new().unwrap();
+ configuration.archive_directory = archive_dir.clone();
+ configuration.posts_directory = posts_dir.clone();
+
+ if let Ok(output) = status(&configuration) {
+ assert!(output.contains("blog: 0"));
+ assert!(output.contains("archive: 0"));
+ } else {
+ panic!("Could not generate status output.");
+ }
+ }
+}