test(package): nested native files retain PDF compatibility preview and compression

This commit is contained in:
shmuelbiller1 2026-10-09 11:55:49 -04:00
parent 71484fd013
commit f9384dfed7
1 changed files with 28 additions and 0 deletions

View File

@ -368,3 +368,31 @@ fn identical_stale_paths_in_different_nested_documents_keep_separate_assets() {
assert_eq!(opened["missingLinks"], json!([]), "{filename}: {opened}");
}
}
#[test]
fn packaging_nested_files_preserves_embedded_preview_pdf_and_compression() {
let dir = Folder::new("package-native-extras");
let mut parent = poster_with_placed_document(&dir);
let source = dir.file("art/part.vectorcraft");
let original = std::fs::read(&source).unwrap();
let doc = vectorcraft_format::load(&original).unwrap();
let preview = png(8, 8, BLUE);
let pdf = b"%PDF-1.7\n%Embedded client preview\n".to_vec();
let mut opts = vectorcraft_format::SaveOptions::for_doc(&doc);
opts.preview = Some(preview.clone());
opts.pdf = Some(pdf.clone());
opts.compress = true;
write(&source, &vectorcraft_format::save_with(&doc, &opts).unwrap());
let result = run(&mut parent, "file.package", json!({ "folder": dir.file("delivery") }));
assert_eq!(result["missingLinks"], json!([]), "{result}");
let packaged = std::fs::read(dir.0.join("delivery/poster Folder/Links/part.vectorcraft")).unwrap();
assert!(packaged.starts_with(&[0x1f, 0x8b]), "compression must be preserved");
assert_eq!(vectorcraft_format::preview(&packaged), Some(preview));
assert_eq!(vectorcraft_format::pdf_content(&packaged), Some(pdf));
let nested = vectorcraft_format::load(&packaged).unwrap();
let mut images = Vec::new();
nested.visit_images(|_, image| images.push(image.link.clone()));
assert_eq!(images.len(), 1);
assert_eq!(images[0].as_ref().unwrap().relative.as_deref(), Some("photo.png"));
}