roadster 0.8.1

A "Batteries Included" web framework for rust designed to get you moving fast.
Documentation
#[cfg(feature = "worker-pg")]
pub mod pg;
#[cfg(feature = "worker-sidekiq")]
pub mod sidekiq;

#[cfg(any(feature = "worker-sidekiq", feature = "worker-pg"))]
fn shared_queues<'a>(
    config_queues: &'a Option<std::collections::BTreeSet<String>>,
    all_queues: &'a std::collections::BTreeSet<String>,
    dedicated_queues: &'a std::collections::BTreeMap<
        String,
        crate::config::service::worker::QueueConfig,
    >,
) -> impl Iterator<Item = &'a String> {
    config_queues
        .as_ref()
        .unwrap_or(all_queues)
        .iter()
        .filter(|queue| !dedicated_queues.contains_key(*queue))
}

#[cfg(test)]
mod tests {
    use crate::config::service::worker::QueueConfig;
    use crate::testing::snapshot::TestCase;
    use insta::assert_debug_snapshot;
    use itertools::Itertools;
    use rstest::{fixture, rstest};
    use std::collections::{BTreeMap, BTreeSet};

    #[fixture]
    #[cfg_attr(coverage_nightly, coverage(off))]
    fn case() -> TestCase {
        Default::default()
    }

    #[rstest]
    #[case(None, Default::default(), Default::default())]
    #[case(Some(BTreeSet::from(["foo".to_owned()])), Default::default(), Default::default())]
    #[case(None, BTreeSet::from(["foo".to_owned()]), Default::default())]
    #[case(Some(BTreeSet::from(["foo".to_owned()])), BTreeSet::from(["bar".to_owned()]), Default::default())]
    #[case(Some(BTreeSet::from(["foo".to_owned()])), Default::default(), [("foo".to_string(), Default::default())].into_iter().collect())]
    #[case(Some(BTreeSet::from(["foo".to_owned(), "bar".to_owned()])), Default::default(), [("foo".to_string(), Default::default())].into_iter().collect())]
    #[cfg(any(feature = "worker-sidekiq", feature = "worker-pg"))]
    #[cfg_attr(coverage_nightly, coverage(off))]
    fn shared_queues(
        _case: TestCase,
        #[case] config_queues: Option<BTreeSet<String>>,
        #[case] all_queues: BTreeSet<String>,
        #[case] dedicated_queues: BTreeMap<String, QueueConfig>,
    ) {
        let shared_queues =
            super::shared_queues(&config_queues, &all_queues, &dedicated_queues).collect_vec();
        assert_debug_snapshot!(shared_queues);
    }
}