@@ -1207,3 +1207,65 @@ def test_type_compatibility(self, client, mock_template, mock_template_copy):
12071207 assert len (errors_diff ) == 1
12081208 errors_same = client .check_type_compatibility (same_type_1_id , same_type_2_id )
12091209 assert len (errors_same ) == 0
1210+
1211+ def test_add_project_template (self , client , projectmaker , mock_template ):
1212+ project = projectmaker .create ()
1213+ pt = client .add_project_template (project .id , mock_template .id )
1214+ assert pt is not None
1215+ assert pt .project_id == project .id
1216+ assert pt .template_id == mock_template .id
1217+
1218+ def test_add_project_template_duplicate (self , client , projectmaker , mock_template ):
1219+ """Adding the same link twice returns the existing record without error."""
1220+ project = projectmaker .create ()
1221+ pt1 = client .add_project_template (project .id , mock_template .id )
1222+ pt2 = client .add_project_template (project .id , mock_template .id )
1223+ assert pt1 .project_id == pt2 .project_id
1224+ assert pt1 .template_id == pt2 .template_id
1225+
1226+ def test_add_project_template_invalid_project (self , client , mock_template ):
1227+ with pytest .raises (Exception ):
1228+ client .add_project_template (- 999 , mock_template .id )
1229+
1230+ def test_add_project_template_invalid_template (self , client , projectmaker ):
1231+ project = projectmaker .create ()
1232+ with pytest .raises (Exception ):
1233+ client .add_project_template (project .id , - 999 )
1234+
1235+ def test_get_project_templates (self , client , projectmaker , mock_template ):
1236+ project = projectmaker .create ()
1237+ client .add_project_template (project .id , mock_template .id )
1238+ templates = client .get_project_templates (project .id )
1239+ assert templates is not None
1240+ template_ids = [t .id for t in templates ]
1241+ assert mock_template .id in template_ids
1242+
1243+ def test_get_project_templates_empty (self , client , projectmaker ):
1244+ """A project with no linked templates returns an empty list."""
1245+ project = projectmaker .create ()
1246+ templates = client .get_project_templates (project .id )
1247+ assert len (templates ) == 0
1248+
1249+ def test_get_project_templates_multiple (self , client , projectmaker , mock_template , mock_template_copy ):
1250+ """Multiple templates can be linked to the same project."""
1251+ project = projectmaker .create ()
1252+ client .add_project_template (project .id , mock_template .id )
1253+ client .add_project_template (project .id , mock_template_copy .id )
1254+ templates = client .get_project_templates (project .id )
1255+ template_ids = [t .id for t in templates ]
1256+ assert mock_template .id in template_ids
1257+ assert mock_template_copy .id in template_ids
1258+
1259+ def test_remove_project_template (self , client , projectmaker , mock_template ):
1260+ project = projectmaker .create ()
1261+ client .add_project_template (project .id , mock_template .id )
1262+ result = client .remove_project_template (project .id , mock_template .id )
1263+ assert result == 'OK'
1264+ templates = client .get_project_templates (project .id )
1265+ assert mock_template .id not in [t .id for t in templates ]
1266+
1267+ def test_remove_project_template_not_linked (self , client , projectmaker , mock_template ):
1268+ """Removing a template that isn't linked to the project raises an error."""
1269+ project = projectmaker .create ()
1270+ with pytest .raises (Exception ):
1271+ client .remove_project_template (project .id , mock_template .id )
0 commit comments