Skip to content

Commit d42f8a3

Browse files
committed
Add test case
1 parent 5c8371f commit d42f8a3

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

crates/vespertide-core/src/schema/constraint.rs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)