diff --git a/config/aspace_mapping.json b/config/aspace_mapping.json index 8572479..ea41e3b 100644 --- a/config/aspace_mapping.json +++ b/config/aspace_mapping.json @@ -9,9 +9,29 @@ "language": "en_US", "delimiter": "" }, - "dc.relation.isversionof": { + "source_system_identifier": { "csv_field_name": "uri", "language": null, "delimiter": "" + }, + "dc.contributor.author": { + "csv_field_name": "author", + "language": null, + "delimiter": "|" + }, + "dc.description": { + "csv_field_name": "description", + "language": "en_US", + "delimiter": "" + }, + "dc.rights": { + "csv_field_name": "rights_statement", + "language": "en_US", + "delimiter": "" + }, + "dc.rights.uri": { + "csv_field_name": "rights_uri", + "language": null, + "delimiter": "" } } \ No newline at end of file diff --git a/dsaps/models.py b/dsaps/models.py index 40100d0..a95f088 100644 --- a/dsaps/models.py +++ b/dsaps/models.py @@ -205,8 +205,10 @@ def from_row(cls, row, field_map): if f == 'file_identifier': file_identifier = field continue # file_identifier is not included in DSpace metadata - if f == 'dc.relation.isversionof': + if f == 'source_system_identifier': source_system_identifier = field + continue # source_system_identifier is not included in DSpace + # metadata delimiter = field_map[f]['delimiter'] language = field_map[f]['language'] if delimiter: diff --git a/tests/conftest.py b/tests/conftest.py index fddeb8a..1b53bde 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -48,13 +48,6 @@ def aspace_mapping(): yield mapping -@pytest.fixture() -def standard_mapping(): - with open('tests/fixtures/standard_mapping.json') as f: - mapping = json.load(f) - yield mapping - - @pytest.fixture() def output_dir(tmp_path): output_dir = tmp_path / 'output' diff --git a/tests/fixtures/aspace_metadata_delimited.csv b/tests/fixtures/aspace_metadata_delimited.csv index 8482b09..5a0bab2 100644 --- a/tests/fixtures/aspace_metadata_delimited.csv +++ b/tests/fixtures/aspace_metadata_delimited.csv @@ -1,3 +1,3 @@ -uri,title,file_identifier,authors -/repo/0/ao/456,Tast Item,tast,"Smith, John|Smith, Jane" -/repo/0/ao/123,Test Item,test,"Smith, Jane" \ No newline at end of file +uri,title,file_identifier,author,description,rights_statement,rights_uri +/repo/0/ao/456,Tast Item,tast,"Smith, John|Smith, Jane","More info at /repo/0/ao/456","Totally Free","http://free.gov" +/repo/0/ao/123,Test Item,test,"Smith, Jane","More info at /repo/0/ao/123","Totally Free","http://free.gov" \ No newline at end of file diff --git a/tests/fixtures/aspace_metadata_no_delimiter.csv b/tests/fixtures/aspace_metadata_no_delimiter.csv index a078983..d131dde 100644 --- a/tests/fixtures/aspace_metadata_no_delimiter.csv +++ b/tests/fixtures/aspace_metadata_no_delimiter.csv @@ -1,2 +1,2 @@ -uri,title,file_identifier,authors -/repo/0/ao/123,Test Item,test,"Smith, Jane" +uri,title,file_identifier,author,description,rights_statement,rights_uri +/repo/0/ao/123,Test Item,test,"Smith, Jane","More info at /repo/0/ao/123","Totally Free","http://free.gov" diff --git a/tests/fixtures/metadata_delim.csv b/tests/fixtures/metadata_delim.csv deleted file mode 100644 index 1d7fb4c..0000000 --- a/tests/fixtures/metadata_delim.csv +++ /dev/null @@ -1,3 +0,0 @@ -uri,title,file_identifier,authors -/repo/0/ao/123,Test Item,test,"Smith, Jane" -/repo/0/ao/456,Tast Item,tast,"Smith, John|Smith, Jane" diff --git a/tests/fixtures/standard_mapping.json b/tests/fixtures/standard_mapping.json deleted file mode 100644 index 4a5713a..0000000 --- a/tests/fixtures/standard_mapping.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "file_identifier": { - "csv_field_name": "file_identifier", - "language": null, - "delimiter": "" - }, - "dc.title": { - "csv_field_name": "title", - "language": "en_US", - "delimiter": "" - }, - "dc.relation.isversionof": { - "csv_field_name": "uri", - "language": null, - "delimiter": "" - }, - "dc.contributor.author": { - "csv_field_name": "authors", - "language": null, - "delimiter": "|" - } -} \ No newline at end of file diff --git a/tests/test_cli.py b/tests/test_cli.py index 937ba80..6fc9846 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -9,9 +9,8 @@ def test_additems(runner, input_dir): '--password', '1234', 'additems', '--metadata-csv', - 'tests/fixtures/metadata_delim.csv', - '--field-map', - 'tests/fixtures/standard_mapping.json', + 'tests/fixtures/aspace_metadata_delimited.csv', + '--field-map', 'config/aspace_mapping.json', '--content-directory', input_dir, '--file-type', 'pdf', '--collection-handle', '333.3333']) @@ -25,9 +24,8 @@ def test_additems(runner, input_dir): '--collection-name', 'Test Collection', 'additems', '--metadata-csv', - 'tests/fixtures/metadata_delim.csv', - '--field-map', - 'tests/fixtures/standard_mapping.json', + 'tests/fixtures/aspace_metadata_delimited.csv', + '--field-map', 'config/aspace_mapping.json', '--content-directory', input_dir, '--file-type', 'pdf']) assert result.exit_code == 0 @@ -53,7 +51,7 @@ def test_reconcile(runner, input_dir, output_dir): '--password', '1234', 'reconcile', '--metadata-csv', - 'tests/fixtures/metadata_delim.csv', + 'tests/fixtures/aspace_metadata_delimited.csv', '--output-directory', output_dir, '--content-directory', input_dir, '--file-type', 'pdf' diff --git a/tests/test_helpers.py b/tests/test_helpers.py index f00f9f5..78e0729 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -38,7 +38,7 @@ def test_create_ingest_report(runner, output_dir): def test_create_metadata_id_list(input_dir): """Test create_metadata_id_list function.""" - metadata_path = 'tests/fixtures/metadata_delim.csv' + metadata_path = 'tests/fixtures/aspace_metadata_delimited.csv' metadata_ids = helpers.create_metadata_id_list(metadata_path) assert 'test' in metadata_ids assert 'tast' in metadata_ids @@ -65,10 +65,10 @@ def test_match_metadata_to_files(): def test_update_metadata_csv(input_dir, output_dir): """Test update_metadata_csv function.""" metadata_matches = ['test'] - helpers.update_metadata_csv('tests/fixtures/metadata_delim.csv', + helpers.update_metadata_csv('tests/fixtures/aspace_metadata_delimited.csv', output_dir, metadata_matches) - with open(f'{output_dir}updated-metadata_delim.csv') as csvfile2: - reader = csv.DictReader(csvfile2) + with open(f'{output_dir}updated-aspace_metadata_delimited.csv') as csvfile: + reader = csv.DictReader(csvfile) for row in reader: assert row['uri'] == '/repo/0/ao/123' assert row['title'] == 'Test Item' diff --git a/tests/test_models.py b/tests/test_models.py index f9db33e..bd3eef4 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -121,15 +121,17 @@ def test_item_bitstreams_from_directory(input_dir): assert item.bitstreams[1].name == 'test_02.pdf' -def test_item_from_row(aspace_delimited_csv, standard_mapping): +def test_item_from_row(aspace_delimited_csv, aspace_mapping): row = next(aspace_delimited_csv) - item = models.Item.from_row(row, standard_mapping) + item = models.Item.from_row(row, aspace_mapping) assert attr.asdict(item)['metadata'] == [ {'key': 'dc.title', 'value': 'Tast Item', 'language': 'en_US'}, - {'key': 'dc.relation.isversionof', 'value': '/repo/0/ao/456', - 'language': None}, {'key': 'dc.contributor.author', 'value': 'Smith, John', 'language': None}, {'key': 'dc.contributor.author', 'value': 'Smith, Jane', - 'language': None} + 'language': None}, + {'key': 'dc.description', 'value': 'More info at /repo/0/ao/456', + 'language': 'en_US'}, + {'key': 'dc.rights', 'value': 'Totally Free', 'language': 'en_US'}, + {'key': 'dc.rights.uri', 'value': 'http://free.gov', 'language': None} ]