@@ -465,6 +465,71 @@ def test_zipzip_file_upload(
465465
466466 assert sorted ([file ["label" ] for file in files ]) == sorted (expected_files )
467467
468+ def test_metadata_with_zip_files_in_package (self , credentials ):
469+ BASE_URL , API_TOKEN = credentials
470+
471+ # Create Dataset
472+ pid = create_dataset (
473+ parent = "Root" ,
474+ server_url = BASE_URL ,
475+ api_token = API_TOKEN ,
476+ )
477+
478+ # Arrange
479+ files = [
480+ File (filepath = "tests/fixtures/archive.zip" ,
481+ dv_dir = "subdir2" ,
482+ description = "This file should not be unzipped"
483+ ),
484+ File (filepath = "tests/fixtures/add_dir_files/somefile.txt" ,
485+ dv_dir = "subdir" ,
486+ description = "A simple text file"
487+ ),
488+ ]
489+
490+ # Act
491+ uploader = DVUploader (files = files )
492+ uploader .upload (
493+ persistent_id = pid ,
494+ api_token = API_TOKEN ,
495+ dataverse_url = BASE_URL ,
496+ n_parallel_uploads = 10 ,
497+ )
498+
499+ # Assert
500+ files = retrieve_dataset_files (
501+ dataverse_url = BASE_URL ,
502+ persistent_id = pid ,
503+ api_token = API_TOKEN ,
504+ )
505+
506+ assert len (files ) == 2 , f"Expected 2 files, got { len (files )} "
507+
508+ expected_files = [
509+ {
510+ "label" : "archive.zip" ,
511+ "directoryLabel" : "subdir2" ,
512+ "description" : "This file should not be unzipped"
513+ },
514+ {
515+ "label" : "somefile.txt" ,
516+ "directoryLabel" : "subdir" ,
517+ "description" : "A simple text file"
518+ },
519+ ]
520+
521+ files_as_expected = sorted (
522+ [
523+ {
524+ k : (f [k ] if k in f else None )
525+ for k in expected_files [0 ].keys ()
526+ }
527+ for f in files
528+ ],
529+ key = lambda x : x ["label" ]
530+ )
531+ assert files_as_expected == expected_files
532+
468533 def test_too_many_zip_files (
469534 self ,
470535 credentials ,
0 commit comments