graphile_worker_crontab_parser 0.5.22

Crontab parsing package for graphile_worker, a high performance Rust/PostgreSQL job queue
Documentation
use nom::Parser;

use super::*;
use graphile_worker_crontab_types::{CrontabFill, JobKeyMode};

#[test]
fn test_valid_query() {
    let input = "?fill=4w3d2h1m&priority=-4 foo";
    assert_eq!(
        Ok((
            " foo",
            CrontabOptions {
                fill: Some(CrontabFill {
                    s: 0,
                    m: 1,
                    h: 2,
                    d: 3,
                    w: 4
                }),
                priority: Some(-4),
                ..Default::default()
            }
        )),
        nom_crontab_opts.parse(input)
    );

    let input = "?id=1234dfsd&max=4 bar";
    assert_eq!(
        Ok((
            " bar",
            CrontabOptions {
                id: Some(String::from("1234dfsd")),
                max: Some(4),
                ..Default::default()
            }
        )),
        nom_crontab_opts.parse(input)
    );
}

#[test]
fn test_query_not_preceded_by_question_mark() {
    let input = "fill=4w3d2h1m&priority=-4 foo";

    assert!(nom_crontab_opts.parse(input).is_err());
}

#[test]
fn test_query_with_invalid_fill() {
    let input = "?fill=4w3d2h1m_bruh&priority=-4 foo";
    assert!(nom_crontab_opts.parse(input).is_err());

    let input = "?fill=4w_3d2h1m&priority=-4 foo";
    assert!(nom_crontab_opts.parse(input).is_err());
}

#[test]
fn test_query_with_invalid_query_string() {
    let input = "?max=not-a-number foo";

    assert!(nom_crontab_opts.parse(input).is_err());
}

#[test]
fn parse_job_key() {
    let input = "?job_key=foo";
    assert_eq!(
        Ok((
            "",
            CrontabOptions {
                job_key: Some(String::from("foo")),
                ..Default::default()
            }
        )),
        nom_crontab_opts.parse(input)
    );
}

#[test]
fn parse_job_key_mode_replace() {
    let input = "?job_key_mode=replace";
    assert_eq!(
        Ok((
            "",
            CrontabOptions {
                job_key_mode: Some(JobKeyMode::Replace),
                ..Default::default()
            }
        )),
        nom_crontab_opts.parse(input)
    );
}

#[test]
fn parse_job_key_mode_preserve_run_at() {
    let input = "?job_key_mode=preserve_run_at";
    assert_eq!(
        Ok((
            "",
            CrontabOptions {
                job_key_mode: Some(JobKeyMode::PreserveRunAt),
                ..Default::default()
            }
        )),
        nom_crontab_opts.parse(input)
    );
}