mod test_db;
use agdb::DbElement;
use agdb::DbId;
use agdb::QueryBuilder;
use test_db::TestDb;
#[test]
fn select_aliases_missing_id() {
let db = TestDb::new();
db.exec_error(
QueryBuilder::select().aliases().ids(1).query(),
"Id '1' not found",
);
}
#[test]
fn select_aliases_missing_alias() {
let db = TestDb::new();
db.exec_error(
QueryBuilder::select().aliases().ids("alias").query(),
"Alias 'alias' not found",
);
}
#[test]
fn select_aliases_ids() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.aliases(["alias1", "alias2"])
.query(),
2,
);
db.exec_elements(
QueryBuilder::select().aliases().ids([1, 2]).query(),
&[
DbElement {
id: DbId(1),
from: None,
to: None,
values: vec![("alias", "alias1").into()],
},
DbElement {
id: DbId(2),
from: None,
to: None,
values: vec![("alias", "alias2").into()],
},
],
);
}
#[test]
fn select_aliases_aliases() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.aliases(["alias1", "alias2"])
.query(),
2,
);
db.exec_elements(
QueryBuilder::select()
.aliases()
.ids(["alias1", "alias2"])
.query(),
&[
DbElement {
id: DbId(1),
from: None,
to: None,
values: vec![("alias", "alias1").into()],
},
DbElement {
id: DbId(2),
from: None,
to: None,
values: vec![("alias", "alias2").into()],
},
],
);
}
#[test]
fn select_aliases_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([1, 3])
.to([3, 5])
.values_uniform([
("key1", 1).into(),
("key2", 10).into(),
("key3", 100).into(),
])
.query(),
2,
);
db.exec_elements(
QueryBuilder::select()
.aliases()
.ids(QueryBuilder::search().from(3).query())
.query(),
&[
DbElement {
id: DbId(3),
from: None,
to: None,
values: vec![("alias", "alias3").into()],
},
DbElement {
id: DbId(5),
from: None,
to: None,
values: vec![("alias", "alias5").into()],
},
],
);
}
#[test]
fn select_aliases_search_alt() {
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([1, 3])
.to([3, 5])
.values_uniform([
("key1", 1).into(),
("key2", 10).into(),
("key3", 100).into(),
])
.query(),
2,
);
db.exec_elements(
QueryBuilder::select().aliases().search().from(3).query(),
&[
DbElement {
id: DbId(3),
from: None,
to: None,
values: vec![("alias", "alias3").into()],
},
DbElement {
id: DbId(5),
from: None,
to: None,
values: vec![("alias", "alias5").into()],
},
],
);
}
#[test]
fn select_all_aliases_empty() {
let db = TestDb::new();
db.exec(QueryBuilder::select().aliases().query(), 0);
}
#[test]
fn select_all_aliases() {
let mut db = TestDb::new();
db.exec_mut(
QueryBuilder::insert()
.nodes()
.aliases(["alias1", "alias2", "alias3"])
.query(),
3,
);
db.exec_elements(
QueryBuilder::select().aliases().query(),
&[
DbElement {
id: DbId(1),
from: None,
to: None,
values: vec![("alias", "alias1").into()],
},
DbElement {
id: DbId(2),
from: None,
to: None,
values: vec![("alias", "alias2").into()],
},
DbElement {
id: DbId(3),
from: None,
to: None,
values: vec![("alias", "alias3").into()],
},
],
);
}