| 745 | 745 | | } |
| 746 | 746 | | |
| 747 | 747 | | #[test] |
| 748 | + | fn an_agent_saying_its_title_again_leaves_when_it_settled() { |
| 749 | + | let db = database(); |
| 750 | + | start(&db, "ses_1", Some("a")); |
| 751 | + | heartbeat_titled(&db, "ses_1", "Rewrite the auth flow", "agent", NOW + MINUTE); |
| 752 | + | let settled = |db: &Connection| -> Option<String> { |
| 753 | + | db.query_row("SELECT title_settled_at FROM sessions WHERE id = 'ses_1'", [], |row| row.get(0)).unwrap() |
| 754 | + | }; |
| 755 | + | assert_eq!(settled(&db), Some(rfc3339(NOW + MINUTE))); |
| 756 | + | // Every heartbeat says it again: it settled when first given. |
| 757 | + | heartbeat_titled(&db, "ses_1", "Rewrite the auth flow", "agent", NOW + 30 * MINUTE); |
| 758 | + | assert_eq!(settled(&db), Some(rfc3339(NOW + MINUTE))); |
| 759 | + | // A new title settles anew. |
| 760 | + | heartbeat_titled(&db, "ses_1", "Rewrite auth and sessions", "agent", NOW + 40 * MINUTE); |
| 761 | + | assert_eq!(settled(&db), Some(rfc3339(NOW + 40 * MINUTE))); |
| 762 | + | } |
| 763 | + | |
| 764 | + | #[test] |
| 748 | 765 | | fn an_agent_echoing_the_provisional_title_keeps_it_provisional() { |
| 749 | 766 | | let db = database(); |
| 750 | 767 | | start(&db, "ses_1", Some("a")); |