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