@@ -72,6 +72,91 @@ def test_create_dataset_view(svc_client_with_repo):
7272@pytest .mark .service
7373@pytest .mark .integration
7474@flaky (max_runs = 30 , min_passes = 1 )
75+ def test_create_dataset_with_metadata (svc_client_with_repo ):
76+ """Create a new dataset with metadata."""
77+ svc_client , headers , project_id , _ = svc_client_with_repo
78+
79+ payload = {
80+ 'project_id' : project_id ,
81+ 'short_name' : '{0}' .format (uuid .uuid4 ().hex ),
82+ 'title' : 'my little dataset' ,
83+ 'creators' : [{
84+ 'name' : 'name123' ,
85+ 86+ 'affiliation' : 'ethz'
87+ }],
88+ 'description' : 'my little description' ,
89+ }
90+
91+ response = svc_client .post (
92+ '/datasets.create' ,
93+ data = json .dumps (payload ),
94+ headers = headers ,
95+ )
96+
97+ assert response
98+ assert_rpc_response (response )
99+
100+ assert {'short_name' } == set (response .json ['result' ].keys ())
101+ assert payload ['short_name' ] == response .json ['result' ]['short_name' ]
102+
103+ params = {
104+ 'project_id' : project_id ,
105+ }
106+ response = svc_client .get (
107+ '/datasets.list' ,
108+ query_string = params ,
109+ headers = headers ,
110+ )
111+
112+ assert response
113+ assert_rpc_response (response )
114+ ds = next (
115+ ds for ds in response .json ['result' ]['datasets' ]
116+ if ds ['short_name' ] == payload ['short_name' ]
117+ )
118+
119+ assert payload ['title' ] == ds ['title' ]
120+ assert payload ['short_name' ] == ds ['short_name' ]
121+ assert payload ['description' ] == ds ['description' ]
122+ assert payload ['creators' ] == ds ['creators' ]
123+
124+
125+ @pytest .mark .service
126+ @pytest .mark .integration
127+ @flaky (max_runs = 30 , min_passes = 1 )
128+ def test_create_dataset_invalid_creator (svc_client_with_repo ):
129+ """Create a new dataset with metadata."""
130+ svc_client , headers , project_id , _ = svc_client_with_repo
131+
132+ payload = {
133+ 'project_id' : project_id ,
134+ 'short_name' : '{0}' .format (uuid .uuid4 ().hex ),
135+ 'title' : 'my little dataset' ,
136+ 'creators' : [{
137+ 'name' : None ,
138+ 139+ 'affiliation' : 'ethz'
140+ }],
141+ 'description' : 'my little description' ,
142+ }
143+
144+ response = svc_client .post (
145+ '/datasets.create' ,
146+ data = json .dumps (payload ),
147+ headers = headers ,
148+ )
149+
150+ assert response
151+ assert INVALID_PARAMS_ERROR_CODE == response .json ['error' ]['code' ]
152+
153+ expected_err = {'creators' : {'0' : {'name' : ['Field may not be null.' ]}}}
154+ assert expected_err == response .json ['error' ]['reason' ]
155+
156+
157+ @pytest .mark .service
158+ @pytest .mark .integration
159+ @flaky (max_runs = 10 , min_passes = 1 )
75160def test_create_dataset_commit_msg (svc_client_with_repo ):
76161 """Create a new dataset successfully with custom commit message."""
77162 svc_client , headers , project_id , _ = svc_client_with_repo
@@ -364,7 +449,7 @@ def test_list_datasets_view(svc_client_with_repo):
364449
365450 assert {
366451 'version' , 'description' , 'created_at' , 'short_name' , 'title' ,
367- 'creator '
452+ 'creators '
368453 } == set (response .json ['result' ]['datasets' ][0 ].keys ())
369454
370455
@@ -390,7 +475,7 @@ def test_list_datasets_view_no_auth(svc_client_with_repo):
390475
391476@pytest .mark .service
392477@pytest .mark .integration
393- @flaky (max_runs = 30 , min_passes = 1 )
478+ @flaky (max_runs = 1 , min_passes = 1 )
394479def test_create_and_list_datasets_view (svc_client_with_repo ):
395480 """Create and list created dataset."""
396481 svc_client , headers , project_id , _ = svc_client_with_repo
@@ -428,7 +513,7 @@ def test_create_and_list_datasets_view(svc_client_with_repo):
428513 assert {'datasets' } == set (response .json ['result' ].keys ())
429514 assert 0 != len (response .json ['result' ]['datasets' ])
430515 assert {
431- 'creator ' , 'short_name' , 'version' , 'title' , 'description' ,
516+ 'creators ' , 'short_name' , 'version' , 'title' , 'description' ,
432517 'created_at'
433518 } == set (response .json ['result' ]['datasets' ][0 ].keys ())
434519
0 commit comments