basiliq 0.1.2

REST API server exposing a Postgres database using JSON:API
use super::*;
use std::ops::Deref;

#[basiliq_test]
async fn empty_db(pool: sqlx::PgPool) {
    let raw_table = BasiliqDbScannedTable::scan_db(&mut pool.acquire().await.unwrap())
        .await
        .unwrap();
    let builder = BasiliqStoreBuilder::new(raw_table);
    assert_eq!(builder.tables().len(), 0);
}

#[basiliq_test]
async fn simple_table_with_default_name(pool: sqlx::PgPool) {
    let mut conn = pool.acquire().await.unwrap();
    sqlx::query(
        r#"
		CREATE TABLE simple_table(
			id			VARCHAR(10) PRIMARY KEY,
			first_name	TEXT,
			last_name	TEXT
		);
	"#,
    )
    .execute(&mut *conn)
    .await
    .unwrap();

    let raw_table = BasiliqDbScannedTable::scan_db(&mut *conn).await.unwrap();
    let builder = BasiliqStoreBuilder::new(raw_table);
    assert_eq!(builder.tables().len(), 1);
    let table = builder
        .get_table(&BasiliqStoreTableIdentifier::new("public", "simple_table"))
        .unwrap();
    let table_by_alias = builder.get_table_by_alias("public__simple_table").unwrap();
    assert_eq!(table == table_by_alias, true);
    assert_eq!(
        matches!(table.properties().properties().get("first_name").unwrap().deref(), messy_json::MessyJsonInner::String(x) if x.optional()),
        true
    );
    assert_eq!(
        matches!(table.properties().properties().get("last_name").unwrap().deref(), messy_json::MessyJsonInner::String(x) if x.optional()),
        true
    );
    assert_eq!(table.properties().has_field("id"), false);
    assert_eq!(table.relationships().len(), 0);
    assert_eq!(
        matches!(table.id_type().first().unwrap(), CibouletteIdType::Text(_)),
        true
    );
}

#[basiliq_test]
async fn simple_table_with_no_field(pool: sqlx::PgPool) {
    let mut conn = pool.acquire().await.unwrap();
    sqlx::query(
        r#"
		CREATE TABLE simple_table(
			id			VARCHAR(10) PRIMARY KEY
		);
	"#,
    )
    .execute(&mut *conn)
    .await
    .unwrap();

    let raw_table = BasiliqDbScannedTable::scan_db(&mut *conn).await.unwrap();
    let builder = BasiliqStoreBuilder::new(raw_table);
    assert_eq!(builder.tables().len(), 1);
    let table = builder
        .get_table(&BasiliqStoreTableIdentifier::new("public", "simple_table"))
        .unwrap();
    let table_by_alias = builder.get_table_by_alias("public__simple_table").unwrap();
    assert_eq!(table == table_by_alias, true);
    assert_eq!(table.properties().properties().is_empty(), true);
    assert_eq!(table.relationships().len(), 0);
    assert_eq!(
        matches!(table.id_type().first().unwrap(), CibouletteIdType::Text(_)),
        true
    );
}