def test_holdings_items_to_marc21(app, marc21_record, document, item2_lib_sion, ebook_5, holding_lib_sion_electronic): """Test holding items to MARC21 transformation.""" record = {'pid': document.pid} result = to_marc21.do(record, with_holdings_items=False) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '001', '008'), '001': document.pid, }) assert result == record record = {'pid': document.pid} result = to_marc21.do(record, with_holdings_items=True) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '001', '008', '949__'), '001': 'doc1', '949__': ({ '__order__': ('0', '1', '2', '3', '4', '5', 'a'), '0': 'org2', '1': 'The district of Sion Libraries', '2': 'lib4', '3': 'Library of Sion', '4': 'loc8', '5': 'Sion Library Restricted Space', 'a': '87121336' }) }) assert result == record record = {'pid': ebook_5.pid} result = to_marc21.do(record, with_holdings_items=True) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '001', '008', '949__'), '001': 'ebook5', '949__': { '__order__': ('0', '1', '2', '3', '4', '5', 'E'), '0': 'org2', '1': 'The district of Sion Libraries', '2': 'lib4', '3': 'Library of Sion', '4': 'loc7', '5': 'Sion Library Public Space', 'E': 'https://bm.ebibliomedia.ch/resources/5f780fc22357943b9a83ca3d' } }) assert result == record
def test_identified_by(app, marc21_record): """Test identifiedBy to MARC21 transformation.""" record = { "identifiedBy": [{ "type": "bf:Isbn", "value": "9782824606835" }, { "type": "bf:Isbn", "value": "12345678901??", "status": "status", "qualifier": "qualifier" }] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '020__', '020__'), '020__': ({ '__order__': ('a', ), 'a': '9782824606835' }, { '__order__': ('z', 'q'), 'z': '12345678901??', 'q': 'qualifier' }) }) assert result == record
def test_type_to_marc21(app, marc21_record): """Test type to MARC21 transformation.""" record = { 'type': [{ 'main_type': 'docmaintype_comic', 'subtype': 'docsubtype_manga' }, { 'main_type': 'docmaintype_map', 'subtype': 'docsubtype_atlas' }] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '900__', '900__'), '900__': ({ '__order__': ('a', 'b'), 'a': 'docmaintype_comic', 'b': 'docsubtype_manga' }, { '__order__': ('a', 'b'), 'a': 'docmaintype_map', 'b': 'docsubtype_atlas' }) }) assert result == record
def test_pid_to_marc21(app, marc21_record): """Test PID to MARC21 transformation.""" record = { 'pid': '12345678', 'language': [{ "type": "bf:Language", "value": "fre" }], 'provisionActivity': [{ '_text': [{ 'language': 'default', 'value': 'Paris : Ed. Cornélius, 2007-' }], 'place': [{ 'country': 'fr', 'type': 'bf:Place' }], 'startDate': 2007, 'endDate': 2020, 'statement': [{ 'label': [{ 'value': 'Paris' }], 'type': 'bf:Place' }, { 'label': [{ 'value': 'Ed. Cornélius' }], 'type': 'bf:Agent' }, { 'label': [{ 'value': '2007-2020' }], 'type': 'Date' }], 'type': 'bf:Publication' }] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '001', '008', '264_1'), '001': '12345678', '008': '000000|20072020xx#|||||||||||||||||fre|c', '264_1': { '__order__': ('a', 'b', 'c'), 'a': 'Paris', 'b': 'Ed. Cornélius', 'c': '2007-2020' } }) assert result == record
def test_contribution_to_marc21(app, marc21_record, mef_record_with_idref_rero, mef_record_with_idref_gnd, mef_record_with_idref_gnd_rero): """Test contribution to MARC21 transformation.""" record = { 'contribution': [{ 'agent': { 'date_of_birth': '1923', 'date_of_death': '1999', 'preferred_name': 'Fujimoto, Satoko', 'type': 'bf:Person' }, 'role': ['ctb', 'aut'] }, { 'agent': { '$ref': 'https://mef.rero.ch/api/idref/' 'mef_record_with_idref_rero', 'type': 'bf:Person' }, 'role': ['trl'] }, { 'agent': { 'conference': False, 'preferred_name': 'Université de Genève', 'type': 'bf:Organisation' }, 'role': ['ctb'] }, { 'agent': { '$ref': 'https://mef.rero.ch/api/gnd/' 'mef_record_with_idref_gnd', 'type': 'bf:Organisation' }, 'role': ['aut'] }, { 'agent': { 'conference': True, 'conference_date': '1989', 'numbering': '4', 'place': 'Lausanne', 'preferred_name': 'Congrès des animaux volants', 'type': 'bf:Organisation' }, 'role': ['aut'] }, { 'agent': { '$ref': 'https://mef.rero.ch/api/idref/' 'mef_record_with_idref_gnd_rero', 'type': 'bf:Organisation' }, 'role': ['aut'] }] } with mock.patch( 'rero_ils.modules.contributions.api.Contribution.get_contribution', side_effect=[ mef_record_with_idref_rero, mef_record_with_idref_gnd, mef_record_with_idref_gnd_rero ]): result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '7001_', '7001_', '710__', '710__', '711__', '711__'), '7001_': ({ '__order__': ('a', 'd', '4', '4'), 'a': 'Fujimoto, Satoko', 'd': '1923 - 1999', '4': ('ctb', 'aut') }, { '__order__': ('a', '4', '0', '0'), 'a': 'Honnoré, Patrick', '4': 'trl', '0': ('(idref)072277742', '(rero)A009220673'), }), '710__': ({ '__order__': ('a', '4'), 'a': 'Université de Genève', '4': 'ctb' }, { '__order__': ('a', '4', '0', '0'), 'a': 'Université de Genève', '4': 'aut', '0': ('(idref)02643136X', '(gnd)004058518'), }), '711__': ({ '__order__': ('a', 'd', '4'), 'a': 'Congrès des animaux volants', 'd': '1989', '4': 'aut', }, { '__order__': ('a', '4', '0', '0', '0'), 'a': 'Congrès ouvrier français', '4': 'aut', '0': ('(idref)03255608X', '(rero)A005462931', '(gnd)050343211') }) }) assert result['__order__'] == record['__order__'] assert result['7001_'] == record['7001_'] assert result['710__'] == record['710__'] assert result['711__'] == record['711__']
def test_physical_description_to_marc21(app, marc21_record): """Test physical_description to MARC21 transformation.""" record = { "extent": "159 p.", "note": [{ "label": "fig.", "noteType": "otherPhysicalDetails" }], "dimensions": ["33 cm"] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '300__'), '300__': { '__order__': ('a', 'b', 'c'), 'a': '159 p.', 'b': 'fig.', 'c': '33 cm' } }) assert result == record record = { "extent": "1 DVD-vidéo", "duration": ["1h42"], "dimensions": ["In-plano", "128ᵒ"], "bookFormat": ["128ᵒ", "in-plano"], "note": [{ "label": "accompanying material", "noteType": "accompanyingMaterial" }], } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '300__'), '300__': { '__order__': ('a', 'c', 'e'), 'a': '1 DVD-vidéo (1h42)', 'c': 'in-plano ; 128ᵒ', 'e': 'accompanying material' } }) assert result == record record = { "extent": "1 DVD-vidéo (1h42)", "duration": ["1h42"], "productionMethod": ["rdapm:1001"], "illustrativeContent": ["illustrations"], "colorContent": ["rdacc:1002"] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '300__'), '300__': { '__order__': ('a', 'b'), 'a': '1 DVD-vidéo (1h42)', 'b': 'blueline process ; illustrations ; monocrome' } }) assert result == record
def test_provision_activity_copyright_date_to_marc21(app, marc21_record): """Test provisionActivity and copyrightDate to MARC21 transformation.""" record = { "provisionActivity": [{ "place": [{ "canton": "vd", "country": "sz", "type": "bf:Place" }], "startDate": 1980, "statement": [{ "label": [{ "value": "Lausanne" }], "type": "bf:Place" }, { "label": [{ "value": "Institut Benjamin Constant" }], "type": "bf:Agent" }, { "label": [{ "value": "Genève" }], "type": "bf:Place" }, { "label": [{ "value": "Slatkine" }], "type": "bf:Agent" }, { "label": [{ "value": "Paris" }], "type": "bf:Place" }, { "label": [{ "value": "diff. France : H. Champion" }], "type": "bf:Agent" }, { "label": [{ "value": "1980-" }], "type": "Date" }], "type": "bf:Publication" }] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '264_1'), '008': '000000|1980||||xx#|||||||||||||||||||||c', '264_1': { '__order__': ('a', 'b', 'a', 'b', 'a', 'b', 'c'), 'a': ('Lausanne', 'Genève', 'Paris'), 'b': ('Institut Benjamin Constant', 'Slatkine', 'diff. France : H. Champion'), 'c': '1980-' } }) assert result == record record = { "provisionActivity": [{ "endDate": 1975, "place": [{ "canton": "ne", "country": "sz", "type": "bf:Place" }], "startDate": 1907, "statement": [{ "label": [{ "value": "La Chaux-de-Fonds" }], "type": "bf:Place" }, { "label": [{ "value": "Union Chrétienne de Jeunes Gens" }], "type": "bf:Agent" }, { "label": [{ "value": "1907-1975" }], "type": "Date" }], "type": "bf:Publication" }, { "statement": [{ "label": [{ "value": "La Chaux-de-Fonds" }], "type": "bf:Place" }, { "label": [{ "value": "[successivement] Impr. C. & J. " "Robert-Tissot, Imp. Robert-Tissot & Fils" }], "type": "bf:Agent" }], "type": "bf:Manufacture" }] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '264_1', '264_3'), '008': '000000|19071975xx#|||||||||||||||||||||c', '264_1': { '__order__': ('a', 'b', 'c'), 'a': 'La Chaux-de-Fonds', 'b': 'Union Chrétienne de Jeunes Gens', 'c': '1907-1975' }, '264_3': { '__order__': ('a', 'b'), 'a': 'La Chaux-de-Fonds', 'b': '[successivement] Impr. C. & J. ' 'Robert-Tissot, Imp. Robert-Tissot & Fils' } }) assert result == record
def test_title_to_marc21(app, marc21_record): """Test title to MARC21 transformation.""" record = { 'title': [{ 'type': 'bf:Title', 'mainTitle': [{ 'value': 'Kunst der Farbe' }], 'subtitle': [{ 'value': 'Studienausgabe' }] }], 'responsibilityStatement': [[{ 'value': 'Johannes Itten' }], [{ 'value': "traduit de l'allemand par Valérie Bourgeois" }]] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '2450_'), '2450_': { '__order__': ('a', 'b', 'c'), 'a': 'Kunst der Farbe', 'b': 'Studienausgabe', 'c': "Johannes Itten ; traduit de l'allemand par Valérie Bourgeois" } }) assert result == record record = { 'title': [{ 'type': 'bf:Title', 'mainTitle': [{ 'value': 'Statistique' }], 'subtitle': [{ 'value': 'exercices corrigés avec rappels de cours' }], 'part': [{ 'partNumber': [{ 'value': 'T. 1' }], 'partName': [{ 'value': 'Licence ès sciences économiques, 1ère année, ' 'étudiants de Grandes écoles' }] }, { 'partNumber': [{ 'value': 'Section 2' }], 'partName': [{ 'value': 'Grandes écoles' }] }] }], 'responsibilityStatement': [[{ 'value': 'Edmond Berrebi' }]] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '2450_'), '2450_': { '__order__': ('a', 'b', 'c', 'n', 'p', 'n', 'p'), 'a': 'Statistique', 'b': 'exercices corrigés avec rappels de cours', 'c': 'Edmond Berrebi', 'n': ('T. 1', 'Section 2'), 'p': ('Licence ès sciences économiques, 1ère année, étudiants de ' 'Grandes écoles', 'Grandes écoles') } }) assert result == record record = { 'title': [{ 'mainTitle': [{ 'value': 'Suisse' }], 'type': 'bf:Title' }, { 'mainTitle': [{ 'value': 'Schweiz' }], 'type': 'bf:ParallelTitle' }, { 'mainTitle': [{ 'value': 'Svizzera' }], 'subtitle': [{ 'value': 'Le guide Michelin 2020' }], 'type': 'bf:ParallelTitle' }] } result = to_marc21.do(record) record = deepcopy(marc21_record) record.update({ '__order__': ('leader', '008', '2450_'), '2450_': { '__order__': ('a', 'b'), 'a': 'Suisse', 'b': 'Schweiz. Svizzera : Le guide Michelin 2020' } }) assert result == record