From 18e23bb10d7645b99419dd6bd3ac50a511b0f65e Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Tue, 2 Apr 2019 22:05:05 +0200 Subject: Add route to fetch films from database. --- tests/room_tests.rs | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/room_tests.rs b/tests/room_tests.rs index 1451b34..55102c5 100644 --- a/tests/room_tests.rs +++ b/tests/room_tests.rs @@ -17,12 +17,16 @@ */ use ramaskrik; -use ramaskrik::models::room::Room; +use ramaskrik::models::{ + film::{ Film, NewFilm }, + room::Room +}; + use rocket::http::ContentType; use rocket_contrib::databases::diesel::prelude::*; use serde_json; -fn server_with_db(f: TestFn) +pub fn server_with_db(f: TestFn) where TestFn: Fn(rocket::Rocket, ramaskrik::db::Connection) { @@ -32,7 +36,7 @@ fn server_with_db(f: TestFn) let server = ramaskrik::build_rocket(&db_url).unwrap(); let db = ramaskrik::db::Connection::get_one(&server).expect("Could not get db connection"); - diesel::dsl::sql_query("TRUNCATE TABLE rooms").execute(&*db).unwrap(); + diesel::dsl::sql_query("TRUNCATE TABLE rooms, films").execute(&*db).unwrap(); f(server, db); } @@ -67,3 +71,34 @@ fn getting_rooms_from_api() { assert!(room_names.contains(&"Neverland")); }) } + +#[test] +fn getting_films_from_api() { + server_with_db(|server, db| { + use ramaskrik::schema::films::dsl::*; + + let new_films = vec![ + NewFilm { title: "Hellraiser", url: Some("https://www.imdb.com/title/tt0093177") }, + NewFilm { title: "Huset", url: Some("https://www.imdb.com/title/tt3425402") }, + NewFilm { title: "Skuld", url: Some("https://www.imdb.com/title/tt4344456") }]; + + diesel::insert_into(films) + .values(&new_films) + .execute(&*db) + .unwrap(); + + let client = rocket::local::Client::new(server).unwrap(); + let mut response = client.get("/films").dispatch(); + assert_eq!(response.content_type(), Some(ContentType::JSON)); + + let fetched_films: Vec = + serde_json::from_str(&response.body_string().unwrap()).unwrap(); + + assert_eq!(fetched_films.len(), 3); + + let film_names: Vec<&str> = fetched_films.iter().map(|film| film.title.as_str()).collect(); + assert!(film_names.contains(&"Hellraiser")); + assert!(film_names.contains(&"Huset")); + assert!(film_names.contains(&"Skuld")); + }); +} -- cgit v1.2.3