Files
AgentCompany/AgentCompany-Rust/crates/storage/tests/onboarding_bootstrap_e2e.rs
T

82 lines
3.0 KiB
Rust

use storage::{OnboardingBootstrapInput, ProfileStore};
use tempfile::tempdir;
#[test]
fn onboarding_bootstrap_creates_company_goal_agent_project_task_and_run() {
let sandbox = tempdir().expect("temp dir");
let mut store = ProfileStore::open(sandbox.path()).expect("open store");
let summary = store
.bootstrap_onboarding(OnboardingBootstrapInput {
company_name: "Orbit Ops".to_string(),
company_description: "Local-first operations company".to_string(),
workspace_path: "/tmp/orbit-ops".to_string(),
execution_mode: "ai_ceo".to_string(),
goal_title: "Ship the native shell".to_string(),
goal_description:
"Rebuild the product in Rust and GPUI without losing product grammar.".to_string(),
connector_id: "anthropic".to_string(),
connector_model: Some("claude-sonnet".to_string()),
})
.expect("bootstrap onboarding");
let snapshot = store.snapshot().expect("snapshot");
assert_eq!(
snapshot.current_company_id.as_deref(),
Some(summary.company_id.as_str())
);
assert!(
snapshot
.companies
.iter()
.any(|company| company.id == summary.company_id && company.name == "Orbit Ops")
);
assert!(
snapshot
.workspaces
.iter()
.any(|workspace| Some(workspace.id.as_str()) == summary.workspace_id.as_deref())
);
assert!(
snapshot
.goals
.iter()
.any(|goal| goal.title == "Ship the native shell" && goal.status == "active")
);
assert!(snapshot.agents.iter().any(|agent| {
agent.id == summary.lead_agent_id
&& agent.name == "CEO"
&& agent.connector_id == "anthropic"
&& agent.model.as_deref() == Some("claude-sonnet")
}));
assert!(
snapshot
.projects
.iter()
.any(|project| project.id == summary.project_id && project.status == "in_progress")
);
assert!(snapshot.tasks.iter().any(|task| {
task.id == summary.task_id
&& task.active_run_id.as_deref() == Some(summary.run_id.as_str())
&& task.assignee_agent_id.as_deref() == Some(summary.lead_agent_id.as_str())
}));
assert!(snapshot.runs.iter().any(|run| {
run.id == summary.run_id
&& run.agent_id == summary.lead_agent_id
&& run.status == "queued"
&& run.task_id.as_deref() == Some(summary.task_id.as_str())
}));
assert!(snapshot.activity.iter().any(|activity| {
activity.entity_id == summary.company_id && activity.action == "company.bootstrapped"
}));
let reopened = ProfileStore::open(sandbox.path()).expect("reopen store");
let reopened_snapshot = reopened.snapshot().expect("reopened snapshot");
assert!(
reopened_snapshot
.runs
.iter()
.any(|run| run.id == summary.run_id && run.status == "queued")
);
}