bodhi 2.2.0

bodhi REST API client
Documentation
use super::bodhi_init;

use crate::error::QueryError;
use crate::{Build, BuildNVRQuery, BuildQuery, FedoraRelease};

#[tokio::test]
async fn query_sanity_packages() {
    let bodhi = bodhi_init().await;

    let rs_builds: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().packages(&["rust"]))
        .await
        .unwrap();
    let go_builds: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().packages(&["golang"]))
        .await
        .unwrap();

    let both_builds: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().packages(&["rust", "golang"]))
        .await
        .unwrap();

    assert_eq!(both_builds.len(), rs_builds.len() + go_builds.len())
}

#[tokio::test]
async fn query_sanity_releases() {
    let bodhi = bodhi_init().await;

    let f31c = || FedoraRelease::try_from("F31C").unwrap();
    let f30c = || FedoraRelease::try_from("F30C").unwrap();

    let f31c_builds: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().releases(&[f31c()]))
        .await
        .unwrap();
    let f30c_builds: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().releases(&[f30c()]))
        .await
        .unwrap();

    let both_builds: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().releases(&[f31c(), f30c()]))
        .await
        .unwrap();

    assert_eq!(both_builds.len(), f31c_builds.len() + f30c_builds.len())
}

#[tokio::test]
async fn query_sanity_updates() {
    let bodhi = bodhi_init().await;

    let builds_one: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().updates(&["FEDORA-2019-cf87377f5f"]))
        .await
        .unwrap();
    let builds_two: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().updates(&["FEDORA-2019-24c9d17287"]))
        .await
        .unwrap();

    let both_builds: Vec<Build> = bodhi
        .paginated_request(&BuildQuery::new().updates(&["FEDORA-2019-cf87377f5f", "FEDORA-2019-24c9d17287"]))
        .await
        .unwrap();

    assert_eq!(both_builds.len(), builds_one.len() + builds_two.len())
}

#[tokio::test]
async fn nvr_query_ok() {
    let bodhi = bodhi_init().await;

    let build = bodhi.request(&BuildNVRQuery::new("rust-1.34.2-1.fc30")).await;

    assert!(build.is_ok());
}

#[tokio::test]
async fn nvr_query_err() {
    let bodhi = bodhi_init().await;

    let build = bodhi.request(&BuildNVRQuery::new("this-doesnt-exist-1-1.fc30")).await;

    assert!(matches!(build, Err(QueryError::NotFound)));
}