Skip to main content

vespertide_query/sql/
raw_sql.rs

1#[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}