blob: 1bd564999dd3c8494d66c9b37387d95921fa6942 (
plain) (
tree)
|
|
/*
Social program for Ramaskrik.
Copyright (C) 2019 Harald Eilertsen <haraldei@anduin.net>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
use ramaskrik;
use ramaskrik::models::room::Room;
use rocket::http::ContentType;
use rocket_contrib::databases::diesel::prelude::*;
use serde_json;
#[test]
fn getting_rooms_from_api() {
let db_url = dotenv::var("TEST_DATABASE_URL")
.map_err(|_| "No database! Set TEST_DATABASE_URL env var and try again.").unwrap();
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();
use ramaskrik::schema::rooms::dsl::*;
let new_rooms = vec![
name.eq("Main room"),
name.eq("Small room"),
name.eq("Neverland")];
diesel::insert_into(rooms)
.values(&new_rooms)
.execute(&*db)
.unwrap();
let client = rocket::local::Client::new(server).unwrap();
let mut response = client.get("/rooms").dispatch();
assert_eq!(response.content_type(), Some(ContentType::JSON));
let fetched_rooms: Vec<Room> =
serde_json::from_str(&response.body_string().unwrap()).unwrap();
assert_eq!(fetched_rooms.len(), 3);
let room_names: Vec<&str> = fetched_rooms.iter().map(|room| room.name.as_str()).collect();
assert!(room_names.contains(&"Main room"));
assert!(room_names.contains(&"Small room"));
assert!(room_names.contains(&"Neverland"));
}
|