mod test_utils;
#[tokio::test]
#[cfg(feature = "mysql")]
async fn test_mysql_direct_result_storage() {
let queue = test_utils::setup_mysql_queue().await;
let job = Job::new("test_queue".to_string(), json!({"test": "data"}))
.with_result_storage(ResultStorage::Database);
let job_id = queue.enqueue(job).await.unwrap();
let result_data = json!({"success": true, "message": "Test result"});
queue
.store_job_result(job_id, result_data.clone(), None)
.await
.unwrap();
let stored_result = queue.get_job_result(job_id).await.unwrap();
assert!(stored_result.is_some());
assert_eq!(stored_result.unwrap(), result_data);
println!("Direct result storage works!");
}
#[tokio::test]
#[cfg(feature = "postgres")]
async fn test_postgres_direct_result_storage() {
let queue = test_utils::setup_postgres_queue().await;
let job = Job::new("test_queue".to_string(), json!({"test": "data"}))
.with_result_storage(ResultStorage::Database);
let job_id = queue.enqueue(job).await.unwrap();
let result_data = json!({"success": true, "message": "Test result"});
queue
.store_job_result(job_id, result_data.clone(), None)
.await
.unwrap();
let stored_result = queue.get_job_result(job_id).await.unwrap();
assert!(stored_result.is_some());
assert_eq!(stored_result.unwrap(), result_data);
println!("Direct result storage works!");
}
#[tokio::test]
#[cfg(feature = "mysql")]
async fn test_mysql_job_completion() {
let queue = test_utils::setup_mysql_queue().await;
let job = Job::new("completion_test".to_string(), json!({"test": "completion"}))
.with_result_storage(ResultStorage::Database);
let job_id = queue.enqueue(job).await.unwrap();
let job = queue.dequeue("completion_test").await.unwrap().unwrap();
println!("Job result config: {:?}", job.result_config);
let result_data = json!({"completed": true});
queue
.store_job_result(job_id, result_data.clone(), None)
.await
.unwrap();
queue.complete_job(job_id).await.unwrap();
let result = queue.get_job_result(job_id).await.unwrap();
assert!(result.is_some());
}