cli-diary 0.8.0

A CLI based diary tool for adding entries on the fly.
Documentation
use std::{path::PathBuf, process::Command};

use assert_cmd::prelude::*;
use predicates::prelude::*;

mod utils;

#[test]
fn test_new_success() -> 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]);
    cmd.assert().success();

    let mut cmd = Command::cargo_bin("diary")?;

    cmd.args(["--config", config_path.to_str().unwrap(), "new"]);
    cmd.assert()
        .success()
        .stdout(predicate::str::contains("Created today's entry."));

    let diary_path: PathBuf = [&dir_str, "diary"].iter().collect();

    assert!(diary_path.read_dir()?.count() == 1);

    Ok(())
}

#[test]
fn test_new_without_init() -> utils::TestReturn {
    let mut cmd = Command::cargo_bin("diary")?;

    let (_, config_path) = utils::create_temp_dir_and_path()?;

    cmd.args(["--config", config_path.to_str().unwrap(), "new"]);
    cmd.assert()
        .failure()
        .stderr(predicate::str::contains("Diary has not been initialised."));

    Ok(())
}