aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2019-04-02 22:05:05 +0200
committerHarald Eilertsen <haraldei@anduin.net>2019-04-02 22:05:05 +0200
commit18e23bb10d7645b99419dd6bd3ac50a511b0f65e (patch)
treed71403522a8f32ae7bbe5dae6133fa5d36204279 /tests
parent23abdc9488ef84d852a5029340a2ac3c66943d99 (diff)
downloadramaskrik-social-18e23bb10d7645b99419dd6bd3ac50a511b0f65e.tar.gz
ramaskrik-social-18e23bb10d7645b99419dd6bd3ac50a511b0f65e.tar.bz2
ramaskrik-social-18e23bb10d7645b99419dd6bd3ac50a511b0f65e.zip
Add route to fetch films from database.
Diffstat (limited to 'tests')
-rw-r--r--tests/room_tests.rs41
1 files changed, 38 insertions, 3 deletions
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<TestFn>(f: TestFn)
+pub fn server_with_db<TestFn>(f: TestFn)
where
TestFn: Fn(rocket::Rocket, ramaskrik::db::Connection)
{
@@ -32,7 +36,7 @@ fn server_with_db<TestFn>(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<Film> =
+ 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"));
+ });
+}