vespertide_query/sql/
raw_sql.rs1#[cfg(test)]
2mod tests {
3 use crate::sql::types::DatabaseBackend;
4 use crate::sql::{BuiltQuery, RawSql};
5 use insta::{assert_snapshot, with_settings};
6 use rstest::rstest;
7
8 #[rstest]
9 #[case::raw_sql_action_postgres(
10 "raw_sql_action_postgres",
11 DatabaseBackend::Postgres,
12 &["SELECT 1"]
13 )]
14 #[case::raw_sql_action_mysql(
15 "raw_sql_action_mysql",
16 DatabaseBackend::MySql,
17 &["SELECT 1"]
18 )]
19 #[case::raw_sql_action_sqlite(
20 "raw_sql_action_sqlite",
21 DatabaseBackend::Sqlite,
22 &["SELECT 1"]
23 )]
24 fn test_raw_sql(
25 #[case] title: &str,
26 #[case] backend: DatabaseBackend,
27 #[case] expected: &[&str],
28 ) {
29 let result = BuiltQuery::Raw(RawSql::uniform("SELECT 1".into()));
30 let sql = result.build(backend);
31 for exp in expected {
32 assert!(
33 sql.contains(exp),
34 "Expected SQL to contain '{exp}', got: {sql}"
35 );
36 }
37
38 with_settings!({ snapshot_suffix => format!("raw_sql_{}", title) }, {
39 assert_snapshot!(sql);
40 });
41 }
42}