lightql 0.2.0

lightweight graphql request builder.
//
//  Rust file | 2018
//  Author: Alexandre Fourcat
//  test.rs
//  module:
//! test modules

#[cfg(test)]
use super::*;

#[derive(Deserialize, Serialize, Debug, Default, PartialEq, Eq)]
struct Player {
    uuid: String
}

#[derive(Deserialize)]
struct OnePlayer {
    player: Player
}

#[derive(Deserialize, Debug, Default, PartialEq, Eq)]
struct Players {
    players: Vec<Player>
}

#[test]
fn req_create_complexe() {
    let mut replace = HashMap::new();
    replace.insert(
        "_uuid".to_string(),
        "8603f518-c2f1-407d-b019-90aa022e22bf".to_string(),
    );

    let ql_req: OnePlayer = Request::new("{ player(uuid: \"_uuid\") { uuid } }")
        .prepare(replace)
        .unwrap()
        .send("https://api.utopia-server.com/")
        .expect("WORKING ERROR");
    assert_eq!(
        Player {
            uuid: "8603f518-c2f1-407d-b019-90aa022e22bf".to_string()
        },
        ql_req.player
    )
}

#[test]
fn req_create_from_file() {
    let ql_req: Players = Request::from_path("ql/request_player.query")
        .unwrap()
        .send("https://api.utopia-server.com/")
        .expect("WORKING ERROR");
    assert_eq!(
        Players {
            players: vec![
                Player {
                    uuid: "d28e5f13-4b84-44ce-9d32-51f1b569adda".to_string()
                },
                Player {
                    uuid: "ddd122ed-232f-4d72-a8a7-2a722193de84".to_string()
                },
                Player {
                    uuid: "8603f518-c2f1-407d-b019-90aa022e22bf".to_string()
                }
            ]
        },
        ql_req
    );
}

#[test]
fn req_prepare_simple() {
    let ql_req = Request::new("{ players { uuid } }")
        .send::<Players>("https://api.utopia-server.com/")
        .expect("WORKING ERROR");
    assert_eq!(
        Players {
            players: vec![
                Player {
                    uuid: "d28e5f13-4b84-44ce-9d32-51f1b569adda".to_string()
                },
                Player {
                    uuid: "ddd122ed-232f-4d72-a8a7-2a722193de84".to_string()
                },
                Player {
                    uuid: "8603f518-c2f1-407d-b019-90aa022e22bf".to_string()
                }
            ]
        },
        ql_req
    );
}

#[test]
fn req_simple_no_prepare() {
    let ql_req: Players = Request::new("{ players { uuid }}")
        .send("https://api.utopia-server.com/")
        .expect("WORKING ERROR");
    assert_eq!(
        Player {
            uuid: "d28e5f13-4b84-44ce-9d32-51f1b569adda".to_string()
        },
        ql_req.players[0]
    );
}

#[test]
fn get_test() {
    let ql_req = Request::new("{ players { uuid } }")
        .get()
        .ql_type(QlType::Mutation);

    assert_eq!(Request {
        ql_type: QlType::Mutation,
        data: "{ players { uuid } }".to_string(),
        prepared: false,
        method: "GET".to_string()
    }, ql_req);
}

#[test]
fn get_then_post_again() {
    let ql_req = Request::new("{ players { uuid } }")
        .get()
        .post()
        .ql_type(QlType::Subscribe);

    assert_eq!(Request {
        ql_type: QlType::Subscribe,
        data: "{ players { uuid } }".to_string(),
        prepared: false,
        method: "POST".to_string()
    }, ql_req);
}