remem-ai 0.6.42

Local-first coding agent memory for Claude Code and OpenAI Codex
Documentation
use rusqlite::params;

use crate::db;
use crate::db::test_support::ScopedTestDataDir;

use super::super::database::check_pending_queue;

#[test]
fn check_pending_queue_reports_expired_legacy_pending_as_replay_required() -> anyhow::Result<()> {
    let _test_dir = ScopedTestDataDir::new("doctor-expired-legacy-pending");
    let conn = db::open_db().expect("db should open");
    let pending_id = db::test_support::insert_legacy_pending_fixture(
        &conn,
        "codex-cli",
        "session-expired",
        "proj-a",
        "tool",
        None,
        None,
        None,
    )
    .expect("pending row insert should succeed");
    conn.execute(
        "UPDATE pending_observations
         SET status = 'processing', lease_expires_epoch = ?2
         WHERE id = ?1",
        params![pending_id, chrono::Utc::now().timestamp() - 1],
    )?;

    let check = check_pending_queue(Some(&conn));

    assert_eq!(check.icon(), "WARN");
    assert!(
        check.detail.contains("requires legacy replay"),
        "{}",
        check.detail
    );
    assert!(
        !check.detail.contains("will auto-recover"),
        "{}",
        check.detail
    );
    assert!(
        check
            .detail
            .contains("preview replay: `remem pending migrate-legacy --dry-run`"),
        "{}",
        check.detail
    );
    assert!(
        check
            .detail
            .contains("apply replay: `remem pending migrate-legacy`"),
        "{}",
        check.detail
    );
    assert!(
        check.detail.contains(
            "apply replay for Claude host: `remem pending migrate-legacy --host claude-code`"
        ),
        "{}",
        check.detail
    );
    assert!(
        check.detail.contains(
            "apply replay for Codex host: `remem pending migrate-legacy --host codex-cli`"
        ),
        "{}",
        check.detail
    );
    Ok(())
}

#[test]
fn check_pending_queue_reports_ready_legacy_pending_as_replay_required() -> anyhow::Result<()> {
    let _test_dir = ScopedTestDataDir::new("doctor-ready-legacy-pending");
    let conn = db::open_db().expect("db should open");
    db::test_support::insert_legacy_pending_fixture(
        &conn,
        "codex-cli",
        "session-ready",
        "proj-a",
        "tool",
        None,
        None,
        None,
    )
    .expect("pending row insert should succeed");

    let check = check_pending_queue(Some(&conn));

    assert_eq!(check.icon(), "WARN");
    assert!(
        check.detail.contains("requires legacy replay"),
        "{}",
        check.detail
    );
    assert!(
        !check.detail.contains("will auto-recover"),
        "{}",
        check.detail
    );
    assert!(
        check
            .detail
            .contains("inspect counts: `remem status --json`"),
        "{}",
        check.detail
    );
    assert!(
        check
            .detail
            .contains("apply replay: `remem pending migrate-legacy`"),
        "{}",
        check.detail
    );
    Ok(())
}