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