Skip to content

Commit fb70ac5

Browse files
authored
feat(datasets): specify title on dataset creation (#1204)
1 parent cf08d03 commit fb70ac5

File tree

3 files changed

+92
-6
lines changed

3 files changed

+92
-6
lines changed

renku/service/serializers/datasets.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class DatasetDetails(Schema):
3838
created_at = fields.String(allow_none=True, attribute='created')
3939

4040
title = fields.String(attribute='name')
41-
creator = fields.List(fields.Nested(DatasetCreators))
41+
creators = fields.List(fields.Nested(DatasetCreators), attribute='creator')
4242
description = fields.String()
4343

4444

renku/service/views/datasets.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,9 +229,10 @@ def create_dataset_view(user, cache):
229229
with chdir(project.abs_path):
230230
create_dataset(
231231
ctx['short_name'],
232-
commit_message=ctx['commit_message'],
233-
creators=ctx.get('creators'),
232+
title=ctx.get('name'),
233+
creators=ctx.get('creator'),
234234
description=ctx.get('description'),
235+
commit_message=ctx['commit_message']
235236
)
236237

237238
if not repo_sync(project.abs_path):

tests/service/views/test_dataset_views.py

Lines changed: 88 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
'email': '[email protected]',
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+
'email': '[email protected]',
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)
75160
def 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)
394479
def 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

Comments
 (0)