mirror of
https://github.com/roapi/roapi.git
synced 2026-06-05 21:04:02 +08:00
ci: add sqlite tests (#253)
This commit is contained in:
parent
90e79dc7f0
commit
c8e7b596ec
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -954,6 +954,7 @@ dependencies = [
|
||||
"pretty_assertions",
|
||||
"regex",
|
||||
"reqwest",
|
||||
"rusqlite",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
|
||||
@ -63,6 +63,7 @@ serde_yaml = "0.8"
|
||||
tempfile = "3.3.0"
|
||||
pretty_assertions = "*"
|
||||
dotenvy = "*"
|
||||
rusqlite = "0"
|
||||
|
||||
[features]
|
||||
default = ["rustls"]
|
||||
|
||||
@ -109,31 +109,3 @@ mod imp {
|
||||
}
|
||||
|
||||
pub use imp::*;
|
||||
|
||||
#[cfg(any(feature = "database-mysql"))]
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use datafusion::datasource::TableProvider;
|
||||
use datafusion::prelude::SessionContext;
|
||||
use dotenvy::dotenv;
|
||||
use std::env;
|
||||
|
||||
use crate::table::TableSource;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[cfg(feature = "database-mysql")]
|
||||
#[tokio::test]
|
||||
async fn load_mysql() -> anyhow::Result<()> {
|
||||
dotenv().ok();
|
||||
if let Ok(name) = env::var("TABLE_NAME") {
|
||||
let t = DatabaseLoader::MySQL
|
||||
.to_mem_table(&TableSource::new(name, env::var("MYSQL_URL")?))?;
|
||||
let ctx = SessionContext::new();
|
||||
let stats = t.scan(&ctx.state(), &None, &[], None).await?.statistics();
|
||||
assert!(stats.num_rows.is_some());
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
24
columnq/tests/table_mysql_test.rs
Normal file
24
columnq/tests/table_mysql_test.rs
Normal file
@ -0,0 +1,24 @@
|
||||
#[cfg(any(feature = "database-mysql"))]
|
||||
mod mysql {
|
||||
use datafusion::datasource::TableProvider;
|
||||
use datafusion::prelude::SessionContext;
|
||||
use std::env;
|
||||
|
||||
use columnq::table::TableSource;
|
||||
|
||||
use columnq::table::database::DatabaseLoader;
|
||||
|
||||
#[tokio::test]
|
||||
async fn load_mysql() -> anyhow::Result<()> {
|
||||
dotenvy::dotenv().ok();
|
||||
if let Ok(name) = env::var("TABLE_NAME") {
|
||||
let t = DatabaseLoader::MySQL
|
||||
.to_mem_table(&TableSource::new(name, env::var("MYSQL_URL")?))?;
|
||||
let ctx = SessionContext::new();
|
||||
let stats = t.scan(&ctx.state(), &None, &[], None).await?.statistics();
|
||||
assert!(stats.num_rows.is_some());
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
32
columnq/tests/table_sqlite_test.rs
Normal file
32
columnq/tests/table_sqlite_test.rs
Normal file
@ -0,0 +1,32 @@
|
||||
#[cfg(any(feature = "database-sqlite"))]
|
||||
mod sqlite {
|
||||
use columnq::table::TableSource;
|
||||
use columnq::ColumnQ;
|
||||
|
||||
#[tokio::test]
|
||||
async fn text_column() -> anyhow::Result<()> {
|
||||
let f = tempfile::NamedTempFile::new()?;
|
||||
let conn = rusqlite::Connection::open(f.path())?;
|
||||
conn.execute_batch(
|
||||
"
|
||||
CREATE TABLE users (name TEXT);
|
||||
INSERT INTO users VALUES ('Alice');
|
||||
INSERT INTO users VALUES ('Bob');
|
||||
",
|
||||
)?;
|
||||
|
||||
let mut cq = ColumnQ::new();
|
||||
|
||||
cq.load_table(&TableSource::new(
|
||||
"users",
|
||||
format!("sqlite://{}", f.path().to_str().unwrap()),
|
||||
))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let batches = cq.query_sql("SELECT * FROM users").await.unwrap();
|
||||
|
||||
assert_eq!(batches[0].num_rows(), 2);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user