@@ -465,6 +465,76 @@ 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+ categories = ["Test file" ]
484+ ),
485+ File (filepath = "tests/fixtures/add_dir_files/somefile.txt" ,
486+ dv_dir = "subdir" ,
487+ description = "A simple text file" ,
488+ categories = ["Test file" ]
489+ ),
490+ ]
491+
492+ # Act
493+ uploader = DVUploader (files = files )
494+ uploader .upload (
495+ persistent_id = pid ,
496+ api_token = API_TOKEN ,
497+ dataverse_url = BASE_URL ,
498+ n_parallel_uploads = 10 ,
499+ )
500+
501+ # Assert
502+ files = retrieve_dataset_files (
503+ dataverse_url = BASE_URL ,
504+ persistent_id = pid ,
505+ api_token = API_TOKEN ,
506+ )
507+
508+ assert len (files ) == 2 , f"Expected 2 files, got { len (files )} "
509+
510+ expected_files = [
511+ {
512+ "label" : "archive.zip" ,
513+ "description" : "This file should not be unzipped" ,
514+ "categories" : ["Test file" ]
515+ },
516+ {
517+ "label" : "somefile.txt" ,
518+ "description" : "A simple text file" ,
519+ "categories" : ["Test file" ]
520+ },
521+ ]
522+
523+ files_as_expected = sorted (
524+ [
525+ {
526+ k : (f [k ] if k in f else None )
527+ for k in expected_files [0 ].keys ()
528+ }
529+ for f in files
530+ ],
531+ key = lambda x : x ["label" ]
532+ )
533+ assert files_as_expected == expected_files , (
534+ f"File metadata not as expected: { json .dumps (files , indent = 2 )} "
535+ )
536+
537+
468538 def test_too_many_zip_files (
469539 self ,
470540 credentials ,
0 commit comments