#[test]
fn excel_rejects_empty_selected_range_with_clear_error() {
let rule = load_rule(&fixtures_dir().join("t34_excel_input").join("rules.yaml"));
let input = build_test_xlsx(XlsxFixtureOptions {
empty_sheet: true,
..XlsxFixtureOptions::default()
});
let err = transform_input(&rule, InputData::Bytes(&input), None)
.expect_err("empty sheet should fail before header lookup");
assert_eq!(err.kind, TransformErrorKind::InvalidInput);
assert!(err.message.contains("selected range has no columns"));
}
#[test]
fn excel_rejects_duplicate_header() {
let rule = parse_rule_file(
r#"
version: 2
input:
format: excel
excel:
sheet: Users
mappings:
- target: "id"
source: "id"
"#,
)
.expect("parse rule");
let input = build_test_xlsx(XlsxFixtureOptions {
duplicate_header: true,
..XlsxFixtureOptions::default()
});
let err = transform_input(&rule, InputData::Bytes(&input), None)
.expect_err("duplicate header should fail");
assert_eq!(err.kind, TransformErrorKind::InvalidInput);
}