#![cfg(feature = "mssql")]
use truefix_store::{MessageStore, MssqlStore, MssqlStoreConfig};
#[tokio::test]
async fn a_failed_transaction_rolls_back_and_leaves_the_connection_usable() {
let Ok(url) = std::env::var("DATABASE_URL_MSSQL") else {
eprintln!("skipping: DATABASE_URL_MSSQL not set");
return;
};
let config = MssqlStoreConfig {
sessions_table: "t_commit_rollback_sessions".to_owned(),
messages_table: "t_commit_rollback_messages".to_owned(),
session_id: "commit-rollback".to_owned(),
..MssqlStoreConfig::new(&url)
};
let store = MssqlStore::connect_with_config(config).await.unwrap();
for i in 1..=5u64 {
store
.save_and_advance_sender(i, format!("msg-{i}").as_bytes())
.await
.unwrap();
}
assert_eq!(store.next_sender_seq().await.unwrap(), 6);
let stored = store.get(1, 5).await.unwrap();
assert_eq!(stored.len(), 5);
}