datasources 0.1.5

Async datasource interfaces, middleware, registry, and test doubles
Documentation
use crate::{default, register, reset, Datasource, MockDriver};
use std::sync::Arc;

fn arrange() {
    reset();
    for key in ["INSTALLED_PROVIDERS", "DATASOURCE_URL", "PROVIDER"] {
        std::env::remove_var(key);
    }
    register("sqlite", MockDriver::arc());
    std::env::set_var("PROVIDER", "sqlite");
}

#[tokio::test]
async fn create_default_from_env_settings() {
    let _guard = super::env_lock();
    arrange();
    let ds = default().expect("default");
    let command = ds.create_command(None).await.unwrap();
    assert_eq!(Datasource::provider(&*ds), "sqlite");
    assert_eq!(Arc::strong_count(&command) > 0, true);
}