Skip to content

Commit 188f2d1

Browse files
committed
Add case and snapshot
1 parent 75effc3 commit 188f2d1

1 file changed

Lines changed: 30 additions & 12 deletions

File tree

crates/vespertide-query/src/sql/create_table.rs

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -177,16 +177,19 @@ mod tests {
177177
});
178178
}
179179

180-
#[test]
181-
fn test_create_table_with_inline_unique() {
180+
#[rstest]
181+
#[case::inline_unique_postgres(DatabaseBackend::Postgres)]
182+
#[case::inline_unique_mysql(DatabaseBackend::MySql)]
183+
#[case::inline_unique_sqlite(DatabaseBackend::Sqlite)]
184+
fn test_create_table_with_inline_unique(#[case] backend: DatabaseBackend) {
182185
// Test inline unique constraint (line 32)
183186
use vespertide_core::schema::str_or_bool::StrOrBoolOrArray;
184187

185188
let mut email_col = col("email", ColumnType::Simple(SimpleColumnType::Text));
186189
email_col.unique = Some(StrOrBoolOrArray::Bool(true));
187190

188191
let result = build_create_table(
189-
&DatabaseBackend::Postgres,
192+
&backend,
190193
"users",
191194
&[
192195
col("id", ColumnType::Simple(SimpleColumnType::Integer)),
@@ -195,15 +198,21 @@ mod tests {
195198
&[],
196199
)
197200
.unwrap();
198-
let sql = result.build(DatabaseBackend::Postgres);
201+
let sql = result.build(backend);
199202
assert!(sql.contains("UNIQUE"));
203+
with_settings!({ snapshot_suffix => format!("create_table_with_inline_unique_{:?}", backend) }, {
204+
assert_snapshot!(sql);
205+
});
200206
}
201207

202-
#[test]
203-
fn test_create_table_with_table_level_unique() {
208+
#[rstest]
209+
#[case::table_level_unique_postgres(DatabaseBackend::Postgres)]
210+
#[case::table_level_unique_mysql(DatabaseBackend::MySql)]
211+
#[case::table_level_unique_sqlite(DatabaseBackend::Sqlite)]
212+
fn test_create_table_with_table_level_unique(#[case] backend: DatabaseBackend) {
204213
// Test table-level unique constraint (lines 53-54, 56-58, 60-61)
205214
let result = build_create_table(
206-
&DatabaseBackend::Postgres,
215+
&backend,
207216
"users",
208217
&[
209218
col("id", ColumnType::Simple(SimpleColumnType::Integer)),
@@ -215,17 +224,23 @@ mod tests {
215224
}],
216225
)
217226
.unwrap();
218-
let sql = result.build(DatabaseBackend::Postgres);
227+
let sql = result.build(backend);
219228
// sea-query doesn't directly support named unique constraints in CREATE TABLE
220229
// but the code path should be covered
221230
assert!(sql.contains("CREATE TABLE"));
231+
with_settings!({ snapshot_suffix => format!("create_table_with_table_level_unique_{:?}", backend) }, {
232+
assert_snapshot!(sql);
233+
});
222234
}
223235

224-
#[test]
225-
fn test_create_table_with_table_level_unique_no_name() {
236+
#[rstest]
237+
#[case::table_level_unique_no_name_postgres(DatabaseBackend::Postgres)]
238+
#[case::table_level_unique_no_name_mysql(DatabaseBackend::MySql)]
239+
#[case::table_level_unique_no_name_sqlite(DatabaseBackend::Sqlite)]
240+
fn test_create_table_with_table_level_unique_no_name(#[case] backend: DatabaseBackend) {
226241
// Test table-level unique constraint without name (lines 53-54, 56-58, 60-61)
227242
let result = build_create_table(
228-
&DatabaseBackend::Postgres,
243+
&backend,
229244
"users",
230245
&[
231246
col("id", ColumnType::Simple(SimpleColumnType::Integer)),
@@ -237,7 +252,10 @@ mod tests {
237252
}],
238253
)
239254
.unwrap();
240-
let sql = result.build(DatabaseBackend::Postgres);
255+
let sql = result.build(backend);
241256
assert!(sql.contains("CREATE TABLE"));
257+
with_settings!({ snapshot_suffix => format!("create_table_with_table_level_unique_no_name_{:?}", backend) }, {
258+
assert_snapshot!(sql);
259+
});
242260
}
243261
}

0 commit comments

Comments
 (0)