@@ -311,7 +311,7 @@ fn test_sea_orm_default_attrs_no_default_value() {
311311}
312312
313313#[ test]
314- fn test_sea_orm_default_attrs_sql_function_skips ( ) {
314+ fn test_sea_orm_default_attrs_sql_function_supported_type ( ) {
315315 let attrs: Vec < syn:: Attribute > = vec ! [ syn:: parse_quote!( #[ sea_orm( default_value = "NOW()" ) ] ) ] ;
316316 let struct_name = syn:: Ident :: new ( "Test" , proc_macro2:: Span :: call_site ( ) ) ;
317317 let ty: syn:: Type = syn:: parse_str ( "String" ) . unwrap ( ) ;
@@ -325,8 +325,42 @@ fn test_sea_orm_default_attrs_sql_function_skips() {
325325 false ,
326326 & mut fns,
327327 ) ;
328+ // Supported type with SQL function → generates serde(default) to mark field not-required
329+ let serde_str = serde. to_string ( ) ;
330+ assert ! (
331+ serde_str. contains( "serde" ) ,
332+ "should have serde default attr: {serde_str}"
333+ ) ;
334+ assert ! (
335+ serde_str. contains( "default_Test_created_at" ) ,
336+ "should reference generated default fn: {serde_str}"
337+ ) ;
338+ // No JSON default for SQL functions (value is DB-side only)
339+ assert ! ( schema. is_empty( ) ) ;
340+ // Default function was generated
341+ assert_eq ! ( fns. len( ) , 1 , "should generate one default function" ) ;
342+ }
343+
344+ #[ test]
345+ fn test_sea_orm_default_attrs_sql_function_unsupported_type_skips ( ) {
346+ let attrs: Vec < syn:: Attribute > =
347+ vec ! [ syn:: parse_quote!( #[ sea_orm( default_value = "MY_FUNC()" ) ] ) ] ;
348+ let struct_name = syn:: Ident :: new ( "Test" , proc_macro2:: Span :: call_site ( ) ) ;
349+ let ty: syn:: Type = syn:: parse_str ( "MyCustomType" ) . unwrap ( ) ;
350+ let mut fns = Vec :: new ( ) ;
351+ let ( serde, schema) = generate_sea_orm_default_attrs (
352+ & attrs,
353+ & struct_name,
354+ "custom_field" ,
355+ & ty,
356+ & ty,
357+ false ,
358+ & mut fns,
359+ ) ;
360+ // Unsupported type with SQL function → still skips entirely
328361 assert ! ( serde. is_empty( ) ) ;
329362 assert ! ( schema. is_empty( ) ) ;
363+ assert ! ( fns. is_empty( ) ) ;
330364}
331365
332366#[ test]
0 commit comments