ormer 0.2.8

A minimalist ORM framework that supports SQLite, PostgreSQL, MySQL, and SqlServer
#![cfg(feature = "sqlite")]

use ormer::{ConnectionPool, Database, DbType, OrmerError};

fn assert_invalid_pool_range(result: Result<(), OrmerError>, expected: &str) {
    match result {
        Ok(()) => panic!("invalid pool range was accepted"),
        Err(OrmerError::InvalidOperation { message }) => {
            assert!(message.contains(expected), "unexpected error: {message}");
        }
        Err(error) => panic!("unexpected error variant: {error}"),
    }
}

#[tokio::test]
async fn pool_builder_rejects_invalid_ranges() {
    for (range, expected) in [(0..0, "max_size"), (2..1, "min_size")] {
        let result = Database::create_pool(DbType::Sqlite, ":memory:")
            .range(range)
            .build()
            .await
            .map(|_| ());
        assert_invalid_pool_range(result, expected);
    }
}

#[tokio::test]
async fn replicated_pool_builder_rejects_invalid_ranges() {
    for (range, expected) in [(0..0, "max_size"), (2..1, "min_size")] {
        let result = ConnectionPool::replicated(DbType::Sqlite)
            .write(":memory:")
            .range(range)
            .connect()
            .await
            .map(|_| ());
        assert_invalid_pool_range(result, expected);
    }
}