use microrm::prelude::*;
use test_log::test;
mod common;
#[derive(Clone, Entity, PartialEq)]
struct Container {
value: usize,
}
#[derive(Schema)]
struct Schema {
containers: microrm::IDMap<Container>,
}
fn simple_test_data(txn: &mut microrm::Transaction, db: &Schema) {
db.containers.insert(txn, Container { value: 5 }).unwrap();
db.containers.insert(txn, Container { value: 4 }).unwrap();
db.containers.insert(txn, Container { value: 9 }).unwrap();
db.containers.insert(txn, Container { value: 7 }).unwrap();
}
#[test]
fn repeated_limit() {
let (pool, db): (_, Schema) = common::open_test_db!();
let mut txn = pool.start().unwrap();
let Err(microrm::Error::LogicError(msg)) = db.containers.limit(1).limit(1).count(&mut txn)
else {
panic!("should have failed")
};
assert_eq!(msg, "repeated limit on query");
}
#[test]
fn simple_limit() {
let (pool, db): (_, Schema) = common::open_test_db!();
{
let mut txn = pool.start().unwrap();
simple_test_data(&mut txn, &db);
txn.commit().unwrap();
}
{
let mut txn = pool.start().unwrap();
assert_eq!(db.containers.limit(2).get(&mut txn).unwrap().len(), 2);
assert_eq!(db.containers.limit(5).get(&mut txn).unwrap().len(), 4);
}
}
#[test]
fn limit_count_interaction() {
let (pool, db): (_, Schema) = common::open_test_db!();
{
let mut txn = pool.start().unwrap();
simple_test_data(&mut txn, &db);
txn.commit().unwrap();
}
{
let mut txn = pool.start().unwrap();
assert_eq!(db.containers.limit(2).count(&mut txn).unwrap(), 4);
assert_eq!(db.containers.limit(5).count(&mut txn).unwrap(), 4);
}
}