()
| 1281 | |
| 1282 | #[test] |
| 1283 | fn test_full_lifecycle() { |
| 1284 | let (_dir, store) = make_store(); |
| 1285 | |
| 1286 | // Create session |
| 1287 | let mut session = AgentSession::new("lifecycle-test", "claude-code", "Claude Code"); |
| 1288 | session.set_model_info("anthropic", "claude-sonnet-4"); |
| 1289 | store.save(&session).unwrap(); |
| 1290 | |
| 1291 | // Turn 1 |
| 1292 | session.begin_turn(); |
| 1293 | session.phase = Phase::Active; |
| 1294 | store.save(&session).unwrap(); |
| 1295 | |
| 1296 | let turn_num = session.end_turn(); |
| 1297 | assert_eq!(turn_num, 1); |
| 1298 | session.phase = Phase::Idle; |
| 1299 | session.add_files_touched(&["src/main.rs".to_string()]); |
| 1300 | store.save(&session).unwrap(); |
| 1301 | |
| 1302 | // Turn 2 |
| 1303 | session.begin_turn(); |
| 1304 | session.phase = Phase::Active; |
| 1305 | let turn_num = session.end_turn(); |
| 1306 | assert_eq!(turn_num, 2); |
| 1307 | session.phase = Phase::Idle; |
| 1308 | session.add_files_touched(&["src/lib.rs".to_string()]); |
| 1309 | store.save(&session).unwrap(); |
| 1310 | |
| 1311 | // End session |
| 1312 | session.phase = Phase::Ended; |
| 1313 | session.ended_at = Some(Utc::now()); |
| 1314 | store.save(&session).unwrap(); |
| 1315 | |
| 1316 | // Verify final state |
| 1317 | let loaded = store.load("lifecycle-test").unwrap().unwrap(); |
| 1318 | assert_eq!(loaded.turn_count, 2); |
| 1319 | assert_eq!(loaded.phase, Phase::Ended); |
| 1320 | assert_eq!(loaded.files_touched, vec!["src/main.rs", "src/lib.rs"]); |
| 1321 | assert!(loaded.ended_at.is_some()); |
| 1322 | assert_eq!(loaded.agent_vendor, "anthropic"); |
| 1323 | assert_eq!(loaded.model, "claude-sonnet-4"); |
| 1324 | |
| 1325 | // Verify it shows up in find_ended |
| 1326 | let ended = store.find_ended().unwrap(); |
| 1327 | assert_eq!(ended.len(), 1); |
| 1328 | assert_eq!(ended[0].session_id, "lifecycle-test"); |
| 1329 | } |
| 1330 | } |
nothing calls this directly
no test coverage detected