ciboulette 0.1.4

Library to parse JSON:API requests and build responses
Documentation
use super::*;

#[test]
fn simple_create() {
    let store = gen_bag();
    let url = Url::parse("http://localhost/").unwrap();
    let opt = url::Url::options().base_url(Some(&url));
    const URL: &str = "/comments";
    const INTENTION: CibouletteIntention = CibouletteIntention::Create;
    let body_str: String = json!({
        "data": json!({
            "type": "comments",
            "attributes": json!({
                "body": "Hello World"
            })
        })
    })
    .to_string();
    let body: Option<&str> = Some(body_str.as_str());

    let parsed_url = opt.parse(URL).unwrap();
    let builder = CibouletteRequestBuilder::new(INTENTION, &parsed_url, &body);
    let request = builder.build(&store).unwrap();
    let res = CibouletteCreateRequest::try_from(request).unwrap();
    let base_type = store.get_type("comments").unwrap();
    let response = CibouletteResponseDataBuilder::new(
        &res,
        vec![gen_data_row(
            &store,
            &base_type,
            "comments",
            "073b5936-0acb-4601-b4b7-9de607dfc2ef",
            true,
        )],
    )
    .build()
    .unwrap();
    assert_eq!(response.status(), CibouletteResponseStatus::Created);
    assert_json_snapshot!(response);
}

#[test]
fn simple_create_no_content() {
    let store = gen_bag();
    let url = Url::parse("http://localhost/").unwrap();
    let opt = url::Url::options().base_url(Some(&url));
    const URL: &str = "/comments";
    const INTENTION: CibouletteIntention = CibouletteIntention::Create;
    let body_str: String = json!({
        "data": json!({
            "type": "comments",
            "attributes": json!({
                "body": "Hello World"
            })
        })
    })
    .to_string();
    let body: Option<&str> = Some(body_str.as_str());

    let parsed_url = opt.parse(URL).unwrap();
    let builder = CibouletteRequestBuilder::new(INTENTION, &parsed_url, &body);
    let request = builder.build(&store).unwrap();
    let res = CibouletteCreateRequest::try_from(request).unwrap();
    let response = CibouletteResponseDataBuilder::<'_, '_, String, _>::new(&res, vec![])
        .build()
        .unwrap();
    assert_eq!(response.status(), CibouletteResponseStatus::Ok);
    assert_json_snapshot!(response);
}