@@ -52,3 +52,62 @@ impl TableConstraint {
5252 }
5353 }
5454}
55+
56+ #[ cfg( test) ]
57+ mod tests {
58+ use super :: * ;
59+
60+ #[ test]
61+ fn test_columns_primary_key ( ) {
62+ let pk = TableConstraint :: PrimaryKey {
63+ auto_increment : false ,
64+ columns : vec ! [ "id" . into( ) , "tenant_id" . into( ) ] ,
65+ } ;
66+ assert_eq ! ( pk. columns( ) . len( ) , 2 ) ;
67+ assert_eq ! ( pk. columns( ) [ 0 ] , "id" ) ;
68+ assert_eq ! ( pk. columns( ) [ 1 ] , "tenant_id" ) ;
69+ }
70+
71+ #[ test]
72+ fn test_columns_unique ( ) {
73+ let unique = TableConstraint :: Unique {
74+ name : Some ( "uq_email" . into ( ) ) ,
75+ columns : vec ! [ "email" . into( ) ] ,
76+ } ;
77+ assert_eq ! ( unique. columns( ) . len( ) , 1 ) ;
78+ assert_eq ! ( unique. columns( ) [ 0 ] , "email" ) ;
79+ }
80+
81+ #[ test]
82+ fn test_columns_foreign_key ( ) {
83+ let fk = TableConstraint :: ForeignKey {
84+ name : Some ( "fk_user" . into ( ) ) ,
85+ columns : vec ! [ "user_id" . into( ) ] ,
86+ ref_table : "users" . into ( ) ,
87+ ref_columns : vec ! [ "id" . into( ) ] ,
88+ on_delete : None ,
89+ on_update : None ,
90+ } ;
91+ assert_eq ! ( fk. columns( ) . len( ) , 1 ) ;
92+ assert_eq ! ( fk. columns( ) [ 0 ] , "user_id" ) ;
93+ }
94+
95+ #[ test]
96+ fn test_columns_index ( ) {
97+ let idx = TableConstraint :: Index {
98+ name : Some ( "ix_created_at" . into ( ) ) ,
99+ columns : vec ! [ "created_at" . into( ) ] ,
100+ } ;
101+ assert_eq ! ( idx. columns( ) . len( ) , 1 ) ;
102+ assert_eq ! ( idx. columns( ) [ 0 ] , "created_at" ) ;
103+ }
104+
105+ #[ test]
106+ fn test_columns_check_returns_empty ( ) {
107+ let check = TableConstraint :: Check {
108+ name : "check_positive" . into ( ) ,
109+ expr : "amount > 0" . into ( ) ,
110+ } ;
111+ assert ! ( check. columns( ) . is_empty( ) ) ;
112+ }
113+ }
0 commit comments