99from tests .integration .base import BaseTestCase
1010
1111
12+
13+ class TestProjectCreateMetadata (BaseTestCase ):
14+ PROJECT_NAME = "sample_basic_project"
15+ PROJECT_TYPE = "Vector"
16+ OTHER_PROJECT_NAME = "other_project"
17+ PROJECT_DESCRIPTION = "DESCRIPTION"
18+ IMAGE_QUALITY_ORIGINAL = "original"
19+
20+ def setUp (self , * args , ** kwargs ):
21+ super (TestProjectCreateMetadata , self ).setUp ()
22+ try :
23+ sa .delete_project (self .OTHER_PROJECT_NAME )
24+ except :
25+ pass
26+
27+ def tearDown (self ) -> None :
28+ super (TestProjectCreateMetadata , self ).tearDown ()
29+ try :
30+ sa .delete_project (self .OTHER_PROJECT_NAME )
31+ except :
32+ pass
33+
34+ def test_create_project_from_metadata (self ):
35+ sa .create_annotation_class (
36+ self .PROJECT_NAME ,
37+ "rrr" ,
38+ "#FFAAFF" ,
39+ [
40+ {
41+ "name" : "tall" ,
42+ "is_multiselect" : 0 ,
43+ "attributes" : [{"name" : "yes" }, {"name" : "no" }],
44+ },
45+ {
46+ "name" : "age" ,
47+ "is_multiselect" : 0 ,
48+ "attributes" : [{"name" : "young" }, {"name" : "old" }],
49+ },
50+ ],
51+ )
52+ sa .set_project_workflow (
53+ self .PROJECT_NAME ,
54+ [
55+ {
56+ "step" : 1 ,
57+ "className" : "rrr" ,
58+ "tool" : 3 ,
59+ "attribute" : [
60+ {
61+ "attribute" : {
62+ "name" : "young" ,
63+ "attribute_group" : {"name" : "age" },
64+ }
65+ },
66+ {
67+ "attribute" : {
68+ "name" : "yes" ,
69+ "attribute_group" : {"name" : "tall" },
70+ }
71+ },
72+ ],
73+ }
74+ ],
75+ )
76+
77+ team_users = sa .search_team_contributors ()
78+ sa .share_project (self .PROJECT_NAME , team_users [0 ], "QA" )
79+
80+ sa .set_project_default_image_quality_in_editor (self .PROJECT_NAME , self .IMAGE_QUALITY_ORIGINAL )
81+ meta = sa .get_project_metadata (self .PROJECT_NAME ,
82+ include_workflow = True ,
83+ include_settings = True ,
84+ include_contributors = True ,
85+ include_annotation_classes = True
86+ )
87+ meta ["name" ] = self .OTHER_PROJECT_NAME
88+ sa .create_project_from_metadata (meta )
89+ created = sa .get_project_metadata (self .OTHER_PROJECT_NAME ,
90+ include_workflow = True ,
91+ include_settings = True ,
92+ include_contributors = True ,
93+ include_annotation_classes = True
94+ )
95+ self .assertEqual (len (created ["classes" ]), 1 )
96+ self .assertEqual (len (created ["contributors" ]), 1 )
97+ self .assertEqual ([f"{ i ['attribute' ]} _{ i ['value' ]} " for i in meta ["settings" ]],
98+ [f"{ i ['attribute' ]} _{ i ['value' ]} " for i in created ["settings" ]])
99+ self .assertEqual (len (created ['workflows' ]), 1 )
100+
101+
12102class TestProject (BaseTestCase ):
13103 PROJECT_NAME = "sample_basic_project"
14104 PROJECT_TYPE = "Pixel"
@@ -19,6 +109,7 @@ class TestProject(BaseTestCase):
19109 PNG_POSTFIX = "*___save.png"
20110 FUSE_PNG_POSTFIX = "*___fuse.png"
21111
112+
22113 @property
23114 def folder_path (self ):
24115 return Path (
0 commit comments