@@ -465,6 +465,76 @@ def test_zipzip_file_upload(
465
465
466
466
assert sorted ([file ["label" ] for file in files ]) == sorted (expected_files )
467
467
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
+
468
538
def test_too_many_zip_files (
469
539
self ,
470
540
credentials ,
0 commit comments