cargo-msrv 0.18.1

Find your minimum supported Rust version (MSRV)!
use crate::manifest::bare_version::BareVersion;
use crate::reporter::event::ShowResult;
use crate::reporter::JsonHandler;
use camino::Utf8Path;
use storyteller::EventHandler;

#[test]
fn handler() {
    let event = ShowResult::new(
        BareVersion::ThreeComponents(1, 2, 3),
        Utf8Path::new("/hello/world").to_path_buf(),
    );

    let writer = Vec::new();
    let handler = JsonHandler::new(writer);
    handler.handle(event.into());

    let buffer = handler.inner_writer();
    let actual: serde_json::Value = serde_json::from_slice(buffer.as_slice()).unwrap();

    let expected = serde_json::json!({
        "type": "subcommand_result",
        "subcommand_id": "show",
        "result": {
            "version": "1.2.3",
            "manifest_path": "/hello/world"
        }
    });

    assert_eq!(actual, expected);
}

#[test]
fn event() {
    let event = ShowResult::new(
        BareVersion::ThreeComponents(1, 10, 100),
        Utf8Path::new("/hello/world").to_path_buf(),
    );

    let expected = serde_json::json!({
        "result": {
            "version": "1.10.100",
            "manifest_path": "/hello/world"
        }
    });

    let actual = serde_json::to_value(event).unwrap();
    assert_eq!(actual, expected);
}