WitNote / tests /test_cli_commands.py
harvesthealth's picture
Upload folder using huggingface_hub
f7044f4 verified
from __future__ import annotations
from typer.testing import CliRunner
from clawteam.cli.commands import app
from clawteam.config import ClawTeamConfig, load_config, save_config
from clawteam.team.manager import TeamManager
def test_config_cli_supports_all_keys_and_bool_values(tmp_path):
runner = CliRunner()
env = {
"HOME": str(tmp_path),
"CLAWTEAM_DATA_DIR": str(tmp_path / ".clawteam"),
}
result = runner.invoke(app, ["config", "set", "skip_permissions", "false"], env=env)
assert result.exit_code == 0
assert load_config().skip_permissions is False
result = runner.invoke(app, ["config", "set", "workspace", "never"], env=env)
assert result.exit_code == 0
assert load_config().workspace == "never"
result = runner.invoke(app, ["config", "get", "workspace"], env=env)
assert result.exit_code == 0
assert "workspace = never" in result.output
def test_team_approve_join_errors_when_request_missing(tmp_path):
runner = CliRunner()
env = {
"HOME": str(tmp_path),
"CLAWTEAM_DATA_DIR": str(tmp_path / ".clawteam"),
"CLAWTEAM_AGENT_ID": "leader001",
"CLAWTEAM_AGENT_NAME": "leader",
}
TeamManager.create_team(
name="demo",
leader_name="leader",
leader_id="leader001",
)
result = runner.invoke(app, ["team", "approve-join", "demo", "missing-req"], env=env)
assert result.exit_code == 1
assert "No join request found with id 'missing-req'" in result.output
assert [member.name for member in TeamManager.list_members("demo")] == ["leader"]
def test_task_cli_supports_priority_create_update_and_list(tmp_path):
runner = CliRunner()
env = {
"HOME": str(tmp_path),
"CLAWTEAM_DATA_DIR": str(tmp_path / ".clawteam"),
}
create_result = runner.invoke(
app,
["task", "create", "demo", "important work", "--priority", "urgent", "--owner", "alice"],
env=env,
)
assert create_result.exit_code == 0
assert "Priority: urgent" in create_result.output
list_result = runner.invoke(
app,
["task", "list", "demo", "--priority", "urgent", "--sort-priority"],
env=env,
)
assert list_result.exit_code == 0
assert "urgent" in list_result.output
assert "important work" in list_result.output
task_id = create_result.output.split("Task created: ")[1].splitlines()[0].strip()
update_result = runner.invoke(
app,
["task", "update", "demo", task_id, "--priority", "low"],
env=env,
)
assert update_result.exit_code == 0
get_result = runner.invoke(
app,
["task", "get", "demo", task_id],
env=env,
)
assert get_result.exit_code == 0
assert "Priority: low" in get_result.output
def test_team_status_uses_configured_timezone(tmp_path):
runner = CliRunner()
env = {
"HOME": str(tmp_path),
"CLAWTEAM_DATA_DIR": str(tmp_path / ".clawteam"),
}
save_config(ClawTeamConfig(timezone="Asia/Shanghai"))
TeamManager.create_team(
name="demo",
leader_name="leader",
leader_id="leader001",
)
result = runner.invoke(app, ["team", "status", "demo"], env=env)
assert result.exit_code == 0
assert "CST" in result.output