mod common;
use azums::jobs::JobsRepo;
use common::setup_db;
use serde_json::json;
use std::time::Duration;
#[tokio::test]
async fn scheduled_job_is_not_leased_early_and_is_leased_after_run_at() {
let Some(pool) = setup_db().await else {
return;
};
let repo = JobsRepo::new(pool.clone());
let _job_id = repo
.enqueue_in("default", "scheduled", json!({"k":"v"}), 2)
.await
.unwrap();
let early = repo.lease_one_job("default", "worker-a", 30).await.unwrap();
assert!(early.is_none(), "should not lease before run_at");
tokio::time::sleep(Duration::from_millis(2300)).await;
let leased = repo.lease_one_job("default", "worker-a", 30).await.unwrap();
assert!(leased.is_some(), "should lease after run_at");
}