queue_workers 0.5.1

A Redis-backed job queue system for Rust applications
Documentation
mod common;
use common::{TestJob, TestQueue};
use queue_workers::error;
use queue_workers::job::Job;
use queue_workers::queue::Queue;

#[tokio::test]
async fn test_job_execution_success() {
    let job = TestJob::new();

    let result = job.execute().await;
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), ());
}

#[tokio::test]
async fn test_job_execution_failure() {
    let job = TestJob::new().with_should_fail(true);

    let result = job.execute().await;
    assert!(result.is_err());
    assert_eq!(result.unwrap_err(), "Job failed");
}

#[tokio::test]
async fn test_queue_push_pop() {
    let queue = TestQueue {
        jobs: std::sync::Arc::new(tokio::sync::Mutex::new(Vec::new())),
    };

    let job = TestJob::new();

    let push_result = queue.push(job).await;
    assert!(push_result.is_ok());

    let pop_result = queue.pop().await;
    assert!(pop_result.is_ok());

    let empty_pop = queue.pop().await;
    assert!(empty_pop.is_err());
    assert!(matches!(
        empty_pop.unwrap_err(),
        error::QueueWorkerError::JobNotFound(_)
    ));
}