govctl 0.9.3

Project governance CLI for RFC, ADR, and Work Item management
use super::*;

fn write_draft_rfc_fixture(project_dir: &std::path::Path) -> common::TestResult {
    let rfc_dir = project_dir.join("gov/rfc/RFC-0001");
    fs::create_dir_all(rfc_dir.join("clauses"))?;
    fs::write(
        rfc_dir.join("rfc.toml"),
        r#"#:schema ../../schema/rfc.schema.json

[govctl]
schema = 1
id = "RFC-0001"
title = "Draft RFC"
version = "0.1.0"
status = "draft"
phase = "spec"
owners = ["test@example.com"]
created = "2026-01-01"

[[sections]]
title = "Specification"
clauses = []

[[changelog]]
version = "0.1.0"
date = "2026-01-01"
notes = "Initial draft"
"#,
    )?;
    Ok(())
}

#[test]
fn test_rfc_set_dry_run_display_path() -> common::TestResult {
    let (temp_dir, date) = init_project_with_date()?;

    write_draft_rfc_fixture(temp_dir.path())?;

    let output = run_commands(
        temp_dir.path(),
        &[&[
            "rfc",
            "set",
            "RFC-0001",
            "title",
            "Updated Title",
            "--dry-run",
        ]],
    )?;
    assert_display_path_snapshot!(normalize_output(&output, temp_dir.path(), &date)?);
    Ok(())
}

#[test]
fn test_rfc_bump_dry_run_display_path() -> common::TestResult {
    let (temp_dir, date) = init_project_with_date()?;

    write_draft_rfc_fixture(temp_dir.path())?;

    let output = run_commands(
        temp_dir.path(),
        &[&[
            "rfc",
            "bump",
            "RFC-0001",
            "--change",
            "fix: test change",
            "--dry-run",
        ]],
    )?;
    assert_display_path_snapshot!(normalize_output(&output, temp_dir.path(), &date)?);
    Ok(())
}