Skip to content

Commit 4b5acad

Browse files
authored
Merge pull request #82 from dev-five-git/fix-utf8-enum
Add test
2 parents 647677e + b8477a9 commit 4b5acad

1 file changed

Lines changed: 107 additions & 0 deletions

File tree

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

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -794,7 +794,15 @@ mod tests {
794794
#[case(SimpleColumnType::Date, None)]
795795
#[case(SimpleColumnType::Time, None)]
796796
#[case(SimpleColumnType::Timestamp, None)]
797+
#[case(SimpleColumnType::Timestamptz, None)]
798+
#[case(SimpleColumnType::Interval, None)]
799+
#[case(SimpleColumnType::Bytea, None)]
797800
#[case(SimpleColumnType::Uuid, None)]
801+
#[case(SimpleColumnType::Json, None)]
802+
#[case(SimpleColumnType::Inet, None)]
803+
#[case(SimpleColumnType::Cidr, None)]
804+
#[case(SimpleColumnType::Macaddr, None)]
805+
#[case(SimpleColumnType::Xml, None)]
798806
fn test_simple_column_type_default_fill_value(
799807
#[case] column_type: SimpleColumnType,
800808
#[case] expected: Option<&str>,
@@ -851,4 +859,103 @@ mod tests {
851859
let ty = ColumnType::Complex(ComplexColumnType::Varchar { length: 100 });
852860
assert_eq!(ty.default_fill_value(), Some("''"));
853861
}
862+
863+
// Tests for enum_variant_names
864+
#[test]
865+
fn test_enum_variant_names_simple_type_returns_none() {
866+
let ty = ColumnType::Simple(SimpleColumnType::Integer);
867+
assert_eq!(ty.enum_variant_names(), None);
868+
}
869+
870+
#[test]
871+
fn test_enum_variant_names_complex_non_enum_returns_none() {
872+
let ty = ColumnType::Complex(ComplexColumnType::Varchar { length: 255 });
873+
assert_eq!(ty.enum_variant_names(), None);
874+
}
875+
876+
#[test]
877+
fn test_enum_variant_names_complex_numeric_returns_none() {
878+
let ty = ColumnType::Complex(ComplexColumnType::Numeric {
879+
precision: 10,
880+
scale: 2,
881+
});
882+
assert_eq!(ty.enum_variant_names(), None);
883+
}
884+
885+
#[test]
886+
fn test_enum_variant_names_complex_char_returns_none() {
887+
let ty = ColumnType::Complex(ComplexColumnType::Char { length: 1 });
888+
assert_eq!(ty.enum_variant_names(), None);
889+
}
890+
891+
#[test]
892+
fn test_enum_variant_names_complex_custom_returns_none() {
893+
let ty = ColumnType::Complex(ComplexColumnType::Custom {
894+
custom_type: "TSVECTOR".into(),
895+
});
896+
assert_eq!(ty.enum_variant_names(), None);
897+
}
898+
899+
#[test]
900+
fn test_enum_variant_names_string_enum() {
901+
let ty = ColumnType::Complex(ComplexColumnType::Enum {
902+
name: "status".into(),
903+
values: EnumValues::String(vec!["active".into(), "inactive".into(), "pending".into()]),
904+
});
905+
assert_eq!(
906+
ty.enum_variant_names(),
907+
Some(vec![
908+
"active".to_string(),
909+
"inactive".to_string(),
910+
"pending".to_string()
911+
])
912+
);
913+
}
914+
915+
#[test]
916+
fn test_enum_variant_names_integer_enum() {
917+
let ty = ColumnType::Complex(ComplexColumnType::Enum {
918+
name: "priority".into(),
919+
values: EnumValues::Integer(vec![
920+
NumValue {
921+
name: "Low".into(),
922+
value: 0,
923+
},
924+
NumValue {
925+
name: "Medium".into(),
926+
value: 5,
927+
},
928+
NumValue {
929+
name: "High".into(),
930+
value: 10,
931+
},
932+
]),
933+
});
934+
assert_eq!(
935+
ty.enum_variant_names(),
936+
Some(vec![
937+
"Low".to_string(),
938+
"Medium".to_string(),
939+
"High".to_string()
940+
])
941+
);
942+
}
943+
944+
#[test]
945+
fn test_enum_variant_names_empty_string_enum() {
946+
let ty = ColumnType::Complex(ComplexColumnType::Enum {
947+
name: "empty".into(),
948+
values: EnumValues::String(vec![]),
949+
});
950+
assert_eq!(ty.enum_variant_names(), Some(vec![]));
951+
}
952+
953+
#[test]
954+
fn test_enum_variant_names_empty_integer_enum() {
955+
let ty = ColumnType::Complex(ComplexColumnType::Enum {
956+
name: "empty".into(),
957+
values: EnumValues::Integer(vec![]),
958+
});
959+
assert_eq!(ty.enum_variant_names(), Some(vec![]));
960+
}
854961
}

0 commit comments

Comments
 (0)