#[cfg(feature = "actors")]
use actix::{Actor, System};
#[cfg(feature = "actors")]
use actix_rt::spawn;
use arangoq::*;
#[cfg(feature = "actors")]
use futures::future::FutureExt;
#[cfg(feature = "actors")]
use mockito;
#[cfg(feature = "actors")]
use mockito::mock;
use serde::{Deserialize, Serialize};
#[cfg(feature = "actors")]
#[test]
fn test_async_tooling() {
std::env::set_var("RUST_LOG", "debug,hyper=info");
let _res = env_logger::try_init();
std::env::set_var("ARANGO_USER_NAME", "evt_write");
std::env::set_var("ARANGO_PASSWORD", "notarealpw");
let mock_resp = r#"{"result":[{"_key":"537130","id":8,"name":"NU","parent_id":"organizers/4242"}],"hasMore":false,"cached":false,"extra":{"stats":{"writesExecuted":0,"writesIgnored":0,"scannedFull":1,"scannedIndex":0,"filtered":0,"httpRequests":0,"executionTime":0.0012001991271972656,"peakMemoryUsage":8007},"warnings":[]},"error":false,"code":201}"#;
let _m = mock("POST", "/_db/evt_test/_api/cursor")
.with_status(200)
.with_header("content-type", "application/json")
.with_body(mock_resp)
.expect(1)
.create();
let _res = System::run(|| {
let db_name = "evt_test".to_owned();
let connection =
ArangoConnection::new(mockito::server_url(), db_name, reqwest::Client::new());
let addr = ArangoActorAsync { connection }.start();
let query = TestUser::query_builder("TestUsers").read().build();
let dbq = DbQuery(query, std::marker::PhantomData::<TestUser>);
let res = addr.send(dbq);
spawn(res.map(|res| {
println!("RESULT: {:#?}", res);
assert_eq!("NU", res.unwrap().unwrap().result.first().unwrap().name);
System::current().stop();
}));
});
}
#[cfg(feature = "actors")]
#[test]
fn test_json_async_tooling() {
std::env::set_var("RUST_LOG", "debug,hyper=info");
let _res = env_logger::try_init();
std::env::set_var("ARANGO_USER_NAME", "evt_write");
std::env::set_var("ARANGO_PASSWORD", "notarealpw");
let mock_resp = r#"{"result":[{"_key":"537130","id":8,"name":"NU","parent_id":"organizers/4242"}],"hasMore":false,"cached":false,"extra":{"stats":{"writesExecuted":0,"writesIgnored":0,"scannedFull":1,"scannedIndex":0,"filtered":0,"httpRequests":0,"executionTime":0.0012001991271972656,"peakMemoryUsage":8007},"warnings":[]},"error":false,"code":201}"#;
let _m = mock("POST", "/_db/evt_test/_api/cursor")
.with_status(200)
.with_header("content-type", "application/json")
.with_body(mock_resp)
.expect(1)
.create();
let _res = System::run(|| {
let db_name = "evt_test".to_owned();
let connection =
ArangoConnection::new(mockito::server_url(), db_name, reqwest::Client::new());
let addr = ArangoActorAsync { connection }.start();
let query = TestUser::query_builder("TestUsers").read().build();
let res = addr.send(query);
spawn(res.map(|res| {
println!("RESULT: {:#?}", res);
assert_eq!("NU", res.unwrap().unwrap().result.first().unwrap()["name"]);
System::current().stop();
}));
});
}
#[derive(Serialize, Deserialize, ArangoBuilder, Debug)]
pub struct TestUser {
name: String,
}
#[cfg(feature = "actixclient")]
#[ignore]
#[test]
fn test_arango_connection_actix() {
use actix_web::client::Client;
use actix_web::test;
std::env::set_var("RUST_BACKTRACE", "1");
let aconn = ArangoConnection::new("http://127.0.0.1:8529".to_owned(), Client::default());
let collection_name = "Users";
let query = TestUser::query_builder(collection_name).read().build();
let res: Result<ArangoResponse<TestUser>, actix_web::Error> =
test::block_on(query.exec(&aconn));
debug!("{:#?}", res);
}
#[cfg(feature = "actixclient")]
#[ignore]
#[test]
fn test_db_get_from_collection() {
use actix_web::client::Client;
use actix_web::test;
let coll = "test_coll";
let res = test::block_fn(move || {
_get_from_collection(&coll, &Client::default(), "http://localhost:8529")
});
let resp = test::block_on(res).unwrap();
assert!(resp["result"][1]["globallyUniqueId"].eq("_statistics"));
let _coll_resp: ArangoResponse<serde_json::Value> = serde_json::from_value(resp).unwrap();
}