mod test_db;
use agdb::DbElement;
use agdb::DbId;
use agdb::QueryBuilder;
use test_db::TestDb;
#[test]
fn select_ids_aliases() {
let mut db = TestDb::new();
db.exec_mut(QueryBuilder::insert().nodes().aliases("alias").query(), 1);
db.exec_ids(QueryBuilder::select().ids("alias").query(), &[1]);
}
#[test]
fn select_from_ids() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.aliases(["alias", "alias2"])
.query(),
2,
);
db.exec_ids(
QueryBuilder::select().ids(["alias", "alias2"]).query(),
&[1, 2],
);
}
#[test]
fn select_missing_aliases() {
let db = TestDb::new();
db.exec_error(
QueryBuilder::select().ids("alias").query(),
"Alias 'alias' not found",
);
}
#[test]
fn select_missing_ids() {
let db = TestDb::new();
db.exec_error(QueryBuilder::select().ids(1).query(), "Id '1' not found");
}
#[test]
fn select_invalid_ids() {
let db = TestDb::new();
db.exec_error(QueryBuilder::select().ids(0).query(), "Id '0' not found");
}
#[test]
fn select_from_search() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.aliases(["alias1", "alias2", "alias3", "alias4", "alias5"])
.query(),
5,
);
db.exec_mut(
QueryBuilder::insert()
.edges()
.from(["alias1", "alias3"])
.to(["alias3", "alias5"])
.query(),
2,
);
db.exec_ids(
QueryBuilder::select()
.ids(QueryBuilder::search().from("alias1").query())
.query(),
&[1, -6, 3, -7, 5],
);
}
#[test]
fn select_embedded_search() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.aliases(["alias1", "alias2", "alias3", "alias4", "alias5"])
.values([
[("k", 1).into()],
[("k", 2).into()],
[("k", 3).into()],
[("k", 4).into()],
[("k", 5).into()],
])
.query(),
5,
);
db.exec_mut(
QueryBuilder::insert()
.edges()
.from(["alias1", "alias3"])
.to(["alias3", "alias5"])
.query(),
2,
);
db.exec_elements(
QueryBuilder::select()
.search()
.from("alias1")
.where_()
.node()
.query(),
&[
DbElement {
id: DbId(1),
from: None,
to: None,
values: vec![("k", 1).into()],
},
DbElement {
id: DbId(3),
from: None,
to: None,
values: vec![("k", 3).into()],
},
DbElement {
id: DbId(5),
from: None,
to: None,
values: vec![("k", 5).into()],
},
],
);
}