nigig-org/crates/apps/spreadsheet/spreadsheet-engine/tests/xls_import.rs
andodeki 1d8b3a6053
Some checks failed
makepad-table / model (push) Has been cancelled
makepad-table / widget (push) Has been cancelled
makepad-table / hygiene (push) Has been cancelled
PDF engine / engine (push) Has been cancelled
PDF engine / makepad-integration (push) Has been cancelled
PDF engine / fuzz (push) Has been cancelled
Payment domain, storage, platform and UI / isolated-payment-tests (push) Has been cancelled
Payment domain, storage, platform and UI / payment-ui-tests (push) Has been cancelled
repo hygiene / hygiene (push) Has been cancelled
doc-engine / engine (push) Has been cancelled
doc-engine / coverage (push) Has been cancelled
doc-engine / consumer (push) Has been cancelled
email / gates (push) Has been cancelled
email / email-domain (push) Has been cancelled
email / nigig-email (push) Has been cancelled
email / supply-chain (push) Has been cancelled
nigig-build (CAD) / supply-chain (push) Has been cancelled
nigig-build (CAD) / cad-module (push) Has been cancelled
nigig-build (CAD) / full-crate-check (push) Has been cancelled
nigig-build (CAD) / cad-engine-coverage (push) Has been cancelled
nigig-build (CAD) / doc-workspace-coverage (push) Has been cancelled
nigig-build (CAD) / cad-widget-coverage (push) Has been cancelled
nigig-map / test (push) Has been cancelled
sms / gates (push) Has been cancelled
sms / robius-sms (push) Has been cancelled
sms / android (push) Has been cancelled
sms / nigig-sms (push) Has been cancelled
sms / supply-chain (push) Has been cancelled
spreadsheet / engine-coverage (push) Has been cancelled
spreadsheet / ui-controller-coverage (push) Has been cancelled
merge(local): reapply local WIP onto merged main -- cad dashboard/explode/script_parts/xray merged with remote Phase-5 LOD, plus doc-ui extraction, spreadsheet xls-import, android ussd, camera and test work
2026-09-01 21:13:52 +03:00

45 lines
1.4 KiB
Rust

//! Integration test: import a real Excel (.xls) file into the spreadsheet engine.
use spreadsheet_engine::import_workbook_from_path;
/// This test reads the real "Old_Mutual_Finance_Budget_Tool.xls" file
/// from the repository's `ui/` directory and verifies that the import
/// produces sheets with cell data.
#[test]
fn import_old_mutual_budget_tool_xls() {
let path = std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.ancestors()
.nth(4)
.unwrap()
.join("ui/Old_Mutual_Finance_Budget_Tool.xls");
if !path.exists() {
eprintln!("Skipping: {} not found", path.display());
return;
}
let result = import_workbook_from_path(&path);
assert!(result.is_ok(), "Import should succeed: {:?}", result.err());
let (sheets, active) = result.unwrap();
assert!(!sheets.is_empty(), "Should have at least one sheet");
assert_eq!(active, 0, "Active sheet should be index 0");
// The first sheet should be named "monthly budget planner".
assert_eq!(sheets[0].name, "monthly budget planner");
// Verify there is at least some cell content.
let mut has_cells = false;
for sheet in &sheets {
for (_id, cell) in &sheet.data.cells {
if !cell.value.is_empty() {
has_cells = true;
break;
}
}
if has_cells {
break;
}
}
assert!(has_cells, "Imported workbook should have cell data");
}