# retoor import argparse from devplacepy.cli import nodes as cli from devplacepy.database import get_table from devplacepy.database import nodes as store from devplacepy.utils import generate_uid def parser(): root = argparse.ArgumentParser() cli.register_nodes(root.add_subparsers(dest="command")) return root def device(local_db): row, _ = store.create_device(generate_uid(), "cli", "native") return row["uid"] def test_suspend_and_unsuspend(local_db, capsys): uid = device(local_db) args = parser().parse_args(["nodes", "suspend", uid, "--minutes", "5"]) args.func(args) assert store.effective_status(get_table("node_devices").find_one(uid=uid)) == "suspended" args = parser().parse_args(["nodes", "unsuspend", uid]) args.func(args) assert store.effective_status(get_table("node_devices").find_one(uid=uid)) == "active" def test_clear_is_a_dry_run_without_force(local_db, capsys): get_table("node_events").insert({"uid": generate_uid(), "kind": "x", "detail": "", "created_at": "2026-01-01T00:00:00+00:00"}) before = store.clear_ephemeral(dry_run=True)["node_events"] args = parser().parse_args(["nodes", "clear"]) args.func(args) assert "pass --force" in capsys.readouterr().out assert store.clear_ephemeral(dry_run=True)["node_events"] == before def test_prune_dry_run_reports_counts(local_db, capsys): args = parser().parse_args(["nodes", "prune", "--dry-run"]) args.func(args) assert "would remove" in capsys.readouterr().out