@@ -72,11 +72,15 @@ def setUp(self):
7272 self .mock_syn = Mock (spec = Synapse )
7373 self .mock_syn .logger = Mock ()
7474 self .folder_id = "syn12345678"
75+ self .project_id = "syn11111111"
7576 self .curation_task_name = "TestCurationTask"
7677 self .instructions = "Test instructions"
7778 self .entity_view_name = "Test Entity View"
7879 self .schema_uri = "sage.schemas.v2571-amp.Biospecimen.schema-0.0.1"
7980
81+ @patch (
82+ "synapseclient.extensions.curator.record_based_metadata_task.project_id_from_entity_id"
83+ )
8084 @patch (
8185 "synapseclient.extensions.curator.file_based_metadata_task.Synapse.get_client"
8286 )
@@ -97,11 +101,13 @@ def test_create_file_based_metadata_task_success_with_schema(
97101 mock_create_wiki ,
98102 mock_create_entity_view ,
99103 mock_get_client ,
104+ mock_get_project_id_from_entity_id ,
100105 ):
101106 """Test successful creation with schema binding."""
102107 # GIVEN a file-based metadata task with schema binding
103108 mock_get_client .return_value = self .mock_syn
104109 mock_create_entity_view .return_value = "syn87654321"
110+ mock_get_project_id_from_entity_id .return_value = self .project_id
105111
106112 mock_folder = Mock ()
107113 mock_folder_cls .return_value = mock_folder
@@ -148,6 +154,9 @@ def test_create_file_based_metadata_task_success_with_schema(
148154 )
149155 mock_get .assert_called_once_with (self .folder_id , synapse_client = self .mock_syn )
150156
157+ @patch (
158+ "synapseclient.extensions.curator.record_based_metadata_task.project_id_from_entity_id"
159+ )
151160 @patch (
152161 "synapseclient.extensions.curator.file_based_metadata_task.Synapse.get_client"
153162 )
@@ -162,11 +171,13 @@ def test_create_file_based_metadata_task_success_without_schema_no_wiki(
162171 mock_folder_cls ,
163172 mock_create_entity_view ,
164173 mock_get_client ,
174+ mock_get_project_id_from_entity_id ,
165175 ):
166176 """Test successful creation without schema binding and without wiki."""
167177 # GIVEN a file-based metadata task without schema binding or wiki
168178 mock_get_client .return_value = self .mock_syn
169179 mock_create_entity_view .return_value = "syn87654321"
180+ mock_get_project_id_from_entity_id .return_value = self .project_id
170181
171182 mock_folder = Mock ()
172183 mock_folder_cls .return_value = mock_folder
@@ -382,58 +393,8 @@ def test_create_file_based_metadata_task_schema_retrieval_error(
382393 )
383394
384395 @patch (
385- "synapseclient.extensions.curator.file_based_metadata_task.Synapse.get_client "
396+ "synapseclient.extensions.curator.record_based_metadata_task.project_id_from_entity_id "
386397 )
387- @patch (
388- "synapseclient.extensions.curator.file_based_metadata_task.create_json_schema_entity_view"
389- )
390- @patch ("synapseclient.extensions.curator.file_based_metadata_task.Folder" )
391- def test_create_file_based_metadata_task_project_traversal (
392- self , mock_folder_cls , mock_create_entity_view , mock_get_client
393- ):
394- """Test project traversal to find parent project."""
395- mock_get_client .return_value = self .mock_syn
396- mock_create_entity_view .return_value = "syn87654321"
397-
398- mock_folder = Mock ()
399- mock_folder_cls .return_value = mock_folder
400- mock_folder .get .return_value = mock_folder
401- mock_folder .parent_id = "syn11111111"
402-
403- # Mock parent folder
404- mock_parent_folder = Mock ()
405- mock_parent_folder .concreteType = "org.sagebionetworks.repo.model.Folder"
406- mock_parent_folder .parentId = "syn22222222"
407-
408- # Mock project
409- mock_project = Mock ()
410- mock_project .concreteType = "org.sagebionetworks.repo.model.Project"
411- mock_project .id = "syn22222222"
412-
413- self .mock_syn .get .side_effect = [mock_parent_folder , mock_project ]
414-
415- mock_task = Mock ()
416- mock_task .task_id = "task123"
417-
418- with patch (
419- "synapseclient.extensions.curator.file_based_metadata_task.CurationTask"
420- ) as mock_curation_task_cls :
421- mock_curation_task = Mock ()
422- mock_curation_task .store .return_value = mock_task
423- mock_curation_task_cls .return_value = mock_curation_task
424-
425- result = create_file_based_metadata_task (
426- folder_id = self .folder_id ,
427- curation_task_name = self .curation_task_name ,
428- instructions = self .instructions ,
429- attach_wiki = False ,
430- synapse_client = self .mock_syn ,
431- )
432-
433- self .assertEqual (result , ("syn87654321" , "task123" ))
434- # Verify that syn.get was called twice (for parent folder and project)
435- self .assertEqual (self .mock_syn .get .call_count , 2 )
436-
437398 @patch (
438399 "synapseclient.extensions.curator.file_based_metadata_task.Synapse.get_client"
439400 )
@@ -448,6 +409,7 @@ def test_create_file_based_metadata_task_with_assignee(
448409 mock_folder_cls ,
449410 mock_create_entity_view ,
450411 mock_get_client ,
412+ mock_get_project_id_from_entity_id ,
451413 ):
452414 """Test successful creation of file-based metadata task with assignee_principal_id."""
453415 # Test both string and int inputs - int should be converted to string
@@ -463,10 +425,12 @@ def test_create_file_based_metadata_task_with_assignee(
463425 mock_folder_cls .reset_mock ()
464426 mock_create_entity_view .reset_mock ()
465427 mock_get_client .reset_mock ()
428+ mock_get_project_id_from_entity_id .reset_mock ()
466429
467430 # GIVEN a file-based metadata task with assignee_principal_id
468431 mock_get_client .return_value = self .mock_syn
469432 mock_create_entity_view .return_value = "test_entity_view_id"
433+ mock_get_project_id_from_entity_id .return_value = self .project_id
470434
471435 mock_folder = Mock ()
472436 mock_folder_cls .return_value = mock_folder
@@ -500,7 +464,7 @@ def test_create_file_based_metadata_task_with_assignee(
500464 # THEN the CurationTask should be called with assignee_principal_id as string
501465 mock_curation_task_cls .assert_called_once_with (
502466 data_type = self .curation_task_name ,
503- project_id = "syn22222222" ,
467+ project_id = self . project_id ,
504468 instructions = self .instructions ,
505469 assignee_principal_id = expected_assignee ,
506470 task_properties = FileBasedMetadataTaskProperties (
0 commit comments