|
18 | 18 | """Serialization tests for renku models.""" |
19 | 19 |
|
20 | 20 | import datetime |
| 21 | +from urllib.parse import quote, urljoin |
21 | 22 |
|
22 | 23 | import yaml |
23 | 24 |
|
| 25 | +from renku.core.management.client import LocalClient |
| 26 | +from renku.core.models.datasets import Dataset |
| 27 | + |
24 | 28 |
|
25 | 29 | def test_dataset_serialization(client, dataset, data_file): |
26 | 30 | """Test Dataset serialization.""" |
@@ -71,20 +75,32 @@ def test_dataset_deserialization(client, dataset): |
71 | 75 | assert type(creator.get(attribute)) is type_ |
72 | 76 |
|
73 | 77 |
|
74 | | -def test_doi_migration(doi_dataset): |
75 | | - """Test migration of id with doi.""" |
76 | | - import yaml |
77 | | - from urllib.parse import quote, urljoin |
| 78 | +def test_dataset_doi_metadata(dataset_metadata): |
| 79 | + """Check dataset metadata for correct DOI.""" |
78 | 80 | from renku.core.utils.doi import is_doi |
79 | | - from renku.core.models.datasets import Dataset |
80 | | - from renku.core.models.jsonld import NoDatesSafeLoader |
| 81 | + dataset = Dataset.from_jsonld( |
| 82 | + dataset_metadata, |
| 83 | + client=LocalClient('.'), |
| 84 | + ) |
| 85 | + |
| 86 | + if is_doi(dataset.identifier): |
| 87 | + assert urljoin( |
| 88 | + 'https://doi.org', dataset.identifier |
| 89 | + ) == dataset.same_as |
81 | 90 |
|
| 91 | + assert dataset._id.endswith( |
| 92 | + 'datasets/{}'.format(quote(dataset.identifier, safe='')) |
| 93 | + ) |
| 94 | + |
| 95 | + |
| 96 | +def test_dataset_files_empty_metadata(dataset_metadata): |
| 97 | + """Check parsing metadata of dataset files with empty filename.""" |
82 | 98 | dataset = Dataset.from_jsonld( |
83 | | - yaml.load(doi_dataset, Loader=NoDatesSafeLoader) |
| 99 | + dataset_metadata, |
| 100 | + client=LocalClient('.'), |
84 | 101 | ) |
85 | 102 |
|
86 | | - assert is_doi(dataset.identifier) |
87 | | - assert urljoin( |
88 | | - 'https://localhost', 'datasets/' + quote(dataset.identifier, safe='') |
89 | | - ) == dataset._id |
90 | | - assert dataset.same_as == urljoin('https://doi.org', dataset.identifier) |
| 103 | + files = [file.filename for file in dataset.files if not file.filename] |
| 104 | + |
| 105 | + if files: |
| 106 | + assert None in files |
0 commit comments