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