#[cfg(feature = "actors")]
use actix::{Actor, System};
#[cfg(feature = "actors")]
use actix_rt::spawn;
use arangoq::*;
#[cfg(feature = "actors")]
use futures::future::FutureExt;
use lazy_static::*;
use proptest::prelude::*;
use proptest_derive::Arbitrary;
use serde::{Deserialize, Serialize};
lazy_static! {
static ref DATABASE: ArangoConnection = {
std::env::set_var("RUST_LOG", "debug,hyper=info,tokio_reactor=info");
let _res = env_logger::try_init();
std::env::set_var("ARANGO_USER_NAME", "arangoq");
std::env::set_var("ARANGO_PASSWORD", "arangoq");
let db_host = "http://localhost:8529/".to_owned();
let db_name = "evt_test".to_owned();
ArangoConnection::new(
db_host,
db_name,
reqwest::Client::new(),
)
};
}
#[cfg(feature = "actors")]
proptest! {
#![proptest_config(ProptestConfig::with_cases(1))]
#[ignore]
#[test]
fn test_live_queries(test_data: TestData) {
let _res = System::run(move || {
let addr = ArangoActorAsync { connection: DATABASE.clone() }.start();
debug!("{:?}", test_data);
let coll = Collection::new("testdocs", CollectionType::Document);
let query = coll.insert(&test_data);
let dbq = DbQuery(query, std::marker::PhantomData::<TestData>);
let res = addr.send(dbq);
spawn(
res.map(|res| {
let ar = res.unwrap().unwrap();
assert!(!ar.error);
let inserted_data = ar.result.first().unwrap();
debug!("{:?}", inserted_data);
assert!(!inserted_data._key.is_empty());
}),
);
let coll = Collection::new("testdocs", CollectionType::Document);
let query = coll.insert(&test_data);
let dbq = DbQuery(query, std::marker::PhantomData::<TestData>);
let res = addr.send(dbq);
spawn(
res.map(|res| {
let ar = res.unwrap().unwrap();
assert!(!ar.error);
let inserted_data = ar.result.first().unwrap();
debug!("{:?}", inserted_data);
assert!(!inserted_data._key.is_empty());
System::current().stop();
}),
);
});
}
}
#[derive(Serialize, Deserialize, Debug, Default, Arbitrary, ArangoBuilder)]
pub struct TestData {
#[proptest(value = "String::new()")]
#[serde(skip_serializing_if = "String::is_empty", default)]
pub(crate) _key: String,
#[proptest(strategy = "any::<String>()")]
name: String,
#[proptest(strategy = "any::<u64>()")]
u64data: u64,
#[proptest(strategy = "any::<u32>()")]
u32data: u32,
#[proptest(strategy = "any::<u16>()")]
u16data: u16,
#[proptest(strategy = "any::<u8>()")]
u8data: u8,
#[proptest(strategy = "any::<i16>()")]
i16data: i16,
}