@@ -478,6 +478,67 @@ def test_update_unowned_dataset(self):
478478 self .assertEqual (request1 .status_code , status .HTTP_403_FORBIDDEN )
479479 self .assertEqual (request2 .status_code , status .HTTP_401_UNAUTHORIZED )
480480
481+ # Test updating metadata
482+ def test_update_dataset_metadata (self ):
483+ new_metadata = {
484+ "title" : "Updated Metadata" ,
485+ "run" : ["X" ],
486+ "definition" : "update test" ,
487+ "instrument" : "none" ,
488+ "process" : "none" ,
489+ "sample" : "none" ,
490+ }
491+ request = self .auth_client1 .put (
492+ "/v1/data/set/1/" , data = {"metadata" : new_metadata }, format = "json"
493+ )
494+ dataset = DataSet .objects .get (id = 1 )
495+ self .assertEqual (request .status_code , status .HTTP_200_OK )
496+ self .assertEqual (dataset .metadata .title , "Updated Metadata" )
497+ self .assertEqual (dataset .metadata .id , 1 )
498+ self .assertEqual (len (MetaData .objects .all ()), 1 )
499+ dataset .metadata .delete ()
500+ self .metadata = MetaData .objects .create (
501+ id = 1 ,
502+ title = "Metadata" ,
503+ run = 0 ,
504+ definition = "test" ,
505+ instrument = "none" ,
506+ process = "none" ,
507+ sample = "none" ,
508+ dataset = self .public_dataset ,
509+ )
510+
511+ # Test partially updating metadata
512+ def test_update_dataset_partial_metadata (self ):
513+ request = self .auth_client1 .put (
514+ "/v1/data/set/1/" ,
515+ data = {"metadata" : {"title" : "Different Title" }},
516+ format = "json" ,
517+ )
518+ dataset = DataSet .objects .get (id = 1 )
519+ metadata = dataset .metadata
520+ self .assertEqual (request .status_code , status .HTTP_200_OK )
521+ self .assertEqual (metadata .title , "Different Title" )
522+ self .assertEqual (metadata .definition , "test" )
523+ self .assertEqual (metadata .id , 1 )
524+ metadata .title = "Metadata"
525+ metadata .save ()
526+
527+ # Test that a dataset cannot be updated to be private and unowned
528+ def test_update_dataset_no_private_unowned (self ):
529+ request1 = self .auth_client1 .put ("/v1/data/set/2/" , data = {"current_user" : "" })
530+ request2 = self .auth_client1 .put (
531+ "/v1/data/set/1/" , data = {"current_user" : "" , "is_public" : False }
532+ )
533+ public_dataset = DataSet .objects .get (id = 1 )
534+ self .assertEqual (request1 .status_code , status .HTTP_200_OK )
535+ self .assertEqual (request2 .status_code , status .HTTP_200_OK )
536+ self .assertEqual (DataSet .objects .get (id = 2 ).current_user , self .user1 )
537+ self .assertEqual (public_dataset .current_user , self .user1 )
538+ self .assertFalse (public_dataset .is_public )
539+ public_dataset .is_public = True
540+ public_dataset .save ()
541+
481542 # Test deleting a dataset
482543 def test_delete_dataset (self ):
483544 quantity = Quantity .objects .create (
0 commit comments