@@ -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