Skip to content

Instantly share code, notes, and snippets.

@louis030195
Created October 24, 2019 12:00
Show Gist options
  • Save louis030195/4938855e34b21554235ee476004d347e to your computer and use it in GitHub Desktop.
Save louis030195/4938855e34b21554235ee476004d347e to your computer and use it in GitHub Desktop.
// See https://rocket.rs/v0.4/guide/testing/#local-dispatching
#[cfg(test)]
mod test {
use mongodb::{doc, error::Error, oid::ObjectId};
use rocket::http::{ContentType, Status};
use rocket::local::Client;
use rocket_contrib::json::Json;
use rustlang_rocket_mongodb::cats::Cat;
use rustlang_rocket_mongodb::rocket;
#[test]
fn get_cats() {
let client = Client::new(rocket()).expect("valid rocket instance");
let response = client.get("/cats").dispatch();
assert_eq!(response.status(), Status::Ok);
}
#[test]
fn get_cat() {
// Well get and post tests are identical ...
let client = Client::new(rocket()).expect("valid rocket instance");
let mut response = client
.post("/cats")
.header(ContentType::JSON)
.body(r#"{ "name": "chacha" }"#)
.dispatch();
assert_eq!(response.status(), Status::Ok);
let id = response.body_string().unwrap();
let id: Vec<&str> = id.split("\"").collect();
let mut response = client.get(format!("/cats/{}", id[3])).dispatch();
assert!(response.body().is_some());
assert!(response.body_string().unwrap().contains(&id[3]));
client.delete("/cats").dispatch();
}
#[test]
fn post_cat() {
let client = Client::new(rocket()).expect("valid rocket instance");
let mut response = client
.post("/cats")
.header(ContentType::JSON)
.body(r#"{ "name": "chacha" }"#)
.dispatch();
assert_eq!(response.status(), Status::Ok);
let id = response.body_string().unwrap();
let id: Vec<&str> = id.split("\"").collect();
let mut response = client.get(format!("/cats/{}", id[3])).dispatch();
assert!(response.body().is_some());
assert!(response.body_string().unwrap().contains(&id[3]));
client.delete("/cats").dispatch();
}
#[test]
fn update_cat() {
let client = Client::new(rocket()).expect("valid rocket instance");
let mut response = client
.post("/cats")
.header(ContentType::JSON)
.body(r#"{ "name": "chacha" }"#)
.dispatch();
assert_eq!(response.status(), Status::Ok);
assert!(response.body().is_some());
let id = response.body_string().unwrap();
let id: Vec<&str> = id.split("\"").collect();
let response = client
.put(format!("/cats/{}", id[3]))
.header(ContentType::JSON)
.body(r#"{ "name": "chichi" }"#)
.dispatch();
assert_eq!(response.status(), Status::Ok);
let mut response = client.get(format!("/cats/{}", id[3])).dispatch();
assert_eq!(response.status(), Status::Ok);
assert!(response.body().is_some());
assert!(response.body_string().unwrap().contains("chichi"));
client.delete("/cats").dispatch();
}
#[test]
fn delete_cat() {
let client = Client::new(rocket()).expect("valid rocket instance");
let mut response = client
.post("/cats")
.header(ContentType::JSON)
.body(r#"{ "name": "chacha" }"#)
.dispatch();
assert_eq!(response.status(), Status::Ok);
let id = response.body_string().unwrap();
let id: Vec<&str> = id.split("\"").collect();
let mut response = client.delete(format!("/cats/{}", id[3])).dispatch();
assert!(response.body().is_some());
assert!(response.body_string().unwrap().contains(&id[3]));
client.delete("/cats").dispatch();
}
#[test]
fn delete_all() {
let client = Client::new(rocket()).expect("valid rocket instance");
client.delete("/cats").dispatch();
let response = client
.post("/cats")
.header(ContentType::JSON)
.body(r#"{ "name": "chacha" }"#)
.dispatch();
assert_eq!(response.status(), Status::Ok);
let response = client.delete("/cats").dispatch();
assert_eq!(response.status(), Status::Ok);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment