Skip to content

Commit f2cc4b8

Browse files
committed
Fix coverage
1 parent ed32b29 commit f2cc4b8

3 files changed

Lines changed: 217 additions & 0 deletions

File tree

crates/vespertide-cli/src/main.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,26 @@ fn main() -> Result<()> {
103103
}
104104
}
105105
}
106+
107+
#[cfg(test)]
108+
mod tests {
109+
use super::*;
110+
111+
#[test]
112+
fn test_backend_arg_from_postgres() {
113+
let backend: DatabaseBackend = BackendArg::Postgres.into();
114+
assert!(matches!(backend, DatabaseBackend::Postgres));
115+
}
116+
117+
#[test]
118+
fn test_backend_arg_from_mysql() {
119+
let backend: DatabaseBackend = BackendArg::Mysql.into();
120+
assert!(matches!(backend, DatabaseBackend::MySql));
121+
}
122+
123+
#[test]
124+
fn test_backend_arg_from_sqlite() {
125+
let backend: DatabaseBackend = BackendArg::Sqlite.into();
126+
assert!(matches!(backend, DatabaseBackend::Sqlite));
127+
}
128+
}

crates/vespertide-exporter/src/sqlalchemy/mod.rs

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,4 +1127,142 @@ mod tests {
11271127
let result = render_entity(&table).unwrap();
11281128
assert!(result.contains("UniqueConstraint(\"col_a\", \"col_b\"),"));
11291129
}
1130+
1131+
#[test]
1132+
fn test_used_types_add_column_type_simple_types() {
1133+
let mut used = UsedTypes::default();
1134+
1135+
// Test each simple type individually
1136+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::SmallInt), false);
1137+
assert!(used.sa_types.contains("SmallInteger"));
1138+
1139+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Integer), false);
1140+
assert!(used.sa_types.contains("Integer"));
1141+
1142+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::BigInt), false);
1143+
assert!(used.sa_types.contains("BigInteger"));
1144+
1145+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Real), false);
1146+
assert!(used.sa_types.contains("Float"));
1147+
1148+
used.add_column_type(
1149+
&ColumnType::Simple(SimpleColumnType::DoublePrecision),
1150+
false,
1151+
);
1152+
assert!(used.sa_types.contains("Float"));
1153+
1154+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Text), false);
1155+
assert!(used.sa_types.contains("Text"));
1156+
1157+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Boolean), false);
1158+
assert!(used.sa_types.contains("Boolean"));
1159+
1160+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Date), false);
1161+
assert!(used.sa_types.contains("Date"));
1162+
assert!(used.datetime_types.contains("date"));
1163+
1164+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Time), false);
1165+
assert!(used.sa_types.contains("Time"));
1166+
assert!(used.datetime_types.contains("time"));
1167+
1168+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Timestamp), false);
1169+
assert!(used.sa_types.contains("DateTime"));
1170+
assert!(used.datetime_types.contains("datetime"));
1171+
1172+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Timestamptz), false);
1173+
assert!(used.sa_types.contains("DateTime"));
1174+
1175+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Interval), false);
1176+
assert!(used.sa_types.contains("Interval"));
1177+
1178+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Bytea), false);
1179+
assert!(used.sa_types.contains("LargeBinary"));
1180+
1181+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Uuid), false);
1182+
assert!(used.sa_types.contains("Uuid"));
1183+
assert!(used.needs_uuid);
1184+
1185+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Json), false);
1186+
assert!(used.sa_types.contains("JSON"));
1187+
1188+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Jsonb), false);
1189+
assert!(used.sa_types.contains("JSON"));
1190+
1191+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Inet), false);
1192+
assert!(used.sa_types.contains("String"));
1193+
1194+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Cidr), false);
1195+
assert!(used.sa_types.contains("String"));
1196+
1197+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Macaddr), false);
1198+
assert!(used.sa_types.contains("String"));
1199+
1200+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Xml), false);
1201+
assert!(used.sa_types.contains("Text"));
1202+
}
1203+
1204+
#[test]
1205+
fn test_used_types_add_column_type_complex_types() {
1206+
let mut used = UsedTypes::default();
1207+
1208+
used.add_column_type(
1209+
&ColumnType::Complex(ComplexColumnType::Varchar { length: 100 }),
1210+
false,
1211+
);
1212+
assert!(used.sa_types.contains("String"));
1213+
1214+
used.add_column_type(
1215+
&ColumnType::Complex(ComplexColumnType::Char { length: 10 }),
1216+
false,
1217+
);
1218+
assert!(used.sa_types.contains("String"));
1219+
1220+
used.add_column_type(
1221+
&ColumnType::Complex(ComplexColumnType::Numeric {
1222+
precision: 10,
1223+
scale: 2,
1224+
}),
1225+
false,
1226+
);
1227+
assert!(used.sa_types.contains("Numeric"));
1228+
assert!(used.needs_decimal);
1229+
1230+
used.add_column_type(
1231+
&ColumnType::Complex(ComplexColumnType::Custom {
1232+
custom_type: "FOO".into(),
1233+
}),
1234+
false,
1235+
);
1236+
// Custom type doesn't add any sa_types
1237+
1238+
used.add_column_type(
1239+
&ColumnType::Complex(ComplexColumnType::Enum {
1240+
name: "status".into(),
1241+
values: EnumValues::String(vec!["a".into()]),
1242+
}),
1243+
false,
1244+
);
1245+
assert!(used.sa_types.contains("Enum"));
1246+
1247+
let mut used2 = UsedTypes::default();
1248+
used2.add_column_type(
1249+
&ColumnType::Complex(ComplexColumnType::Enum {
1250+
name: "priority".into(),
1251+
values: EnumValues::Integer(vec![NumValue {
1252+
name: "Low".into(),
1253+
value: 0,
1254+
}]),
1255+
}),
1256+
false,
1257+
);
1258+
assert!(used2.sa_types.contains("Integer"));
1259+
}
1260+
1261+
#[test]
1262+
fn test_used_types_nullable_sets_optional() {
1263+
let mut used = UsedTypes::default();
1264+
assert!(!used.needs_optional);
1265+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Integer), true);
1266+
assert!(used.needs_optional);
1267+
}
11301268
}

crates/vespertide-exporter/src/sqlmodel/mod.rs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,4 +1269,60 @@ mod tests {
12691269
assert!(result.contains("server_default"));
12701270
assert!(result.contains("SOME_CONSTANT"));
12711271
}
1272+
1273+
#[test]
1274+
fn test_used_types_add_column_type_simple_types() {
1275+
let mut used = UsedTypes::default();
1276+
1277+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Date), false);
1278+
assert!(used.datetime_types.contains("date"));
1279+
1280+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Time), false);
1281+
assert!(used.datetime_types.contains("time"));
1282+
1283+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Timestamp), false);
1284+
assert!(used.datetime_types.contains("datetime"));
1285+
1286+
let mut used2 = UsedTypes::default();
1287+
used2.add_column_type(&ColumnType::Simple(SimpleColumnType::Timestamptz), false);
1288+
assert!(used2.datetime_types.contains("datetime"));
1289+
1290+
let mut used3 = UsedTypes::default();
1291+
used3.add_column_type(&ColumnType::Simple(SimpleColumnType::Uuid), false);
1292+
assert!(used3.needs_uuid);
1293+
1294+
// Test _ => {} branch with other types
1295+
let mut used4 = UsedTypes::default();
1296+
used4.add_column_type(&ColumnType::Simple(SimpleColumnType::Integer), false);
1297+
assert!(used4.datetime_types.is_empty());
1298+
assert!(!used4.needs_uuid);
1299+
}
1300+
1301+
#[test]
1302+
fn test_used_types_add_column_type_complex_types() {
1303+
let mut used = UsedTypes::default();
1304+
used.add_column_type(
1305+
&ColumnType::Complex(ComplexColumnType::Numeric {
1306+
precision: 10,
1307+
scale: 2,
1308+
}),
1309+
false,
1310+
);
1311+
assert!(used.needs_decimal);
1312+
1313+
let mut used2 = UsedTypes::default();
1314+
used2.add_column_type(
1315+
&ColumnType::Complex(ComplexColumnType::Varchar { length: 100 }),
1316+
false,
1317+
);
1318+
assert!(!used2.needs_decimal);
1319+
}
1320+
1321+
#[test]
1322+
fn test_used_types_nullable_sets_optional() {
1323+
let mut used = UsedTypes::default();
1324+
assert!(!used.needs_optional);
1325+
used.add_column_type(&ColumnType::Simple(SimpleColumnType::Integer), true);
1326+
assert!(used.needs_optional);
1327+
}
12721328
}

0 commit comments

Comments
 (0)