use std::{
fs::{create_dir, File},
path::PathBuf,
process::Command,
};
use assert_cmd::prelude::*;
use predicates::prelude::*;
mod utils;
#[test]
fn test_commit_no_options() -> utils::TestReturn {
let mut cmd = Command::cargo_bin("diary")?;
let (dir_str, config_path) = utils::create_temp_dir_and_path()?;
cmd.args([
"--config",
config_path.to_str().unwrap(),
"init",
&dir_str,
"-r",
]);
cmd.assert();
let mut cmd = Command::cargo_bin("diary")?;
cmd.args(["--config", config_path.to_str().unwrap(), "new"]);
cmd.assert();
let mut cmd = Command::cargo_bin("diary")?;
cmd.args(["--config", config_path.to_str().unwrap(), "commit"]);
cmd.assert()
.success()
.stdout(predicate::str::contains("Committed entry."));
Ok(())
}
#[test]
fn test_commit_no_file() -> utils::TestReturn {
let mut cmd = Command::cargo_bin("diary")?;
let (dir_str, config_path) = utils::create_temp_dir_and_path()?;
cmd.args([
"--config",
config_path.to_str().unwrap(),
"init",
&dir_str,
"-r",
]);
cmd.assert();
let mut cmd = Command::cargo_bin("diary")?;
cmd.args(["--config", config_path.to_str().unwrap(), "commit"]);
cmd.assert()
.failure()
.stderr(predicate::str::contains("No such file or directory"));
Ok(())
}
#[test]
fn test_commit_given_date() -> utils::TestReturn {
let mut cmd = Command::cargo_bin("diary")?;
let (dir_str, config_path) = utils::create_temp_dir_and_path()?;
cmd.args([
"--config",
config_path.to_str().unwrap(),
"init",
&dir_str,
"-r",
]);
cmd.assert();
let mut entry_path: PathBuf = [&dir_str, "diary/2020-01"].iter().collect();
create_dir(&entry_path).unwrap();
entry_path.push(PathBuf::from("diary_2020-01-01.md"));
File::create(entry_path).unwrap();
let mut cmd = Command::cargo_bin("diary")?;
cmd.args([
"--config",
config_path.to_str().unwrap(),
"commit",
"-d",
"2020-01-01",
]);
cmd.assert()
.success()
.stdout(predicate::str::contains("Committed entry."));
Ok(())
}