def parse_node(self, response, node): node.remove_namespaces() cds_bibrec, ok, errs = create_bibrec( node.xpath('.//record').extract()[0] ) if not ok: raise RuntimeError("Cannot parse record %s: %s", node, errs) self.logger.info("Here's the record: %s" % cds_bibrec) inspire_bibrec = CDS2Inspire(cds_bibrec).get_record() marcxml_record = record_xml_output(inspire_bibrec) record = create_record(marcxml_record) app = Flask('hepcrawl') app.config.update( self.settings.getdict('MARC_TO_HEP_SETTINGS', {}) ) with app.app_context(): json_record = hep.do(record) base_uri = self.settings['SCHEMA_BASE_URI'] json_record['$schema'] = base_uri + 'hep.json' parsed_item = ParsedItem( record=json_record, record_format='hep', ) return parsed_item
def test_accelerator_experiments_from_693__a(): schema = load_schema('hep') subschema = schema['properties']['accelerator_experiments'] snippet = ( '<datafield tag="693" ind1=" " ind2=" ">' ' <subfield code="a">BATSE</subfield>' '</datafield>' ) # record/1623303 expected = [ {'accelerator': 'BATSE'}, ] result = hep.do(create_record(snippet)) assert validate(result['accelerator_experiments'], subschema) is None assert expected == result['accelerator_experiments'] expected = [ {'a': 'BATSE'}, ] result = hep2marc.do(result) assert expected == result['693']
def test_isbns_from_020__a_handles_capital_x(): schema = load_schema('hep') subschema = schema['properties']['isbns'] snippet = ( '<datafield tag="020" ind1=" " ind2=" ">' ' <subfield code="a">069114558X</subfield>' '</datafield>' ) # record/1230427 expected = [ {'value': '069114558X'}, ] result = hep.do(create_record(snippet)) assert validate(result['isbns'], subschema) is None assert expected == result['isbns'] expected = [ {'a': '069114558X'}, ] result = hep2marc.do(result) assert expected == result['020']
def test_report_numbers_from_037__a(): schema = load_schema('hep') subschema = schema['properties']['report_numbers'] snippet = ( '<datafield tag="037" ind1=" " ind2=" ">' ' <subfield code="a">CERN-EP-2016-319</subfield>' '</datafield>' ) # record/1511277 expected = [ {'value': 'CERN-EP-2016-319'}, ] result = hep.do(create_record(snippet)) assert validate(result['report_numbers'], subschema) is None assert expected == result['report_numbers'] expected = [ {'a': 'CERN-EP-2016-319'}, ] result = hep2marc.do(result) assert expected == result['037']
def test_isbns_from_020__a(): schema = load_schema('hep') subschema = schema['properties']['isbns'] snippet = ( '<datafield tag="020" ind1=" " ind2=" ">' ' <subfield code="a">9780198759713</subfield>' '</datafield>' ) # record/1510325 expected = [ {'value': '9780198759713'}, ] result = hep.do(create_record(snippet)) assert validate(result['isbns'], subschema) is None assert expected == result['isbns'] expected = [ {'a': '9780198759713'}, ] result = hep2marc.do(result) assert expected == result['020']
def test_dois_from_0247_a_q_2_9_normalizes_erratum(): schema = load_schema('hep') subschema = schema['properties']['dois'] snippet = ( '<datafield tag="024" ind1="7" ind2=" ">' ' <subfield code="2">DOI</subfield>' ' <subfield code="9">bibmatch</subfield>' ' <subfield code="a">10.1103/PhysRevC.93.049901</subfield>' ' <subfield code="q">Erratum</subfield>' '</datafield>' ) # record/898839 expected = [ { 'material': 'erratum', 'value': '10.1103/PhysRevC.93.049901', 'source': 'bibmatch', }, ] result = hep.do(create_record(snippet)) assert validate(result['dois'], subschema) is None assert expected == result['dois'] expected = [ { 'a': '10.1103/PhysRevC.93.049901', 'q': 'erratum', '2': 'DOI', '9': 'bibmatch', }, ] result = hep2marc.do(result) assert expected == result['0247']
def test_document_type_from_980__a_handles_activity_report(): schema = load_schema('hep') subschema = schema['properties']['document_type'] snippet = ( '<datafield tag="980" ind1=" " ind2=" ">' ' <subfield code="a">ActivityReport</subfield>' '</datafield>' ) # record/1514964 expected = [ 'activity report', ] result = hep.do(create_record(snippet)) assert validate(result['document_type'], subschema) is None assert expected == result['document_type'] expected = [ {'a': 'ActivityReport'}, ] result = hep2marc.do(result) assert expected == result['980']
def test_publication_type_from_980__a(): schema = load_schema('hep') subschema = schema['properties']['publication_type'] snippet = ( '<datafield tag="980" ind1=" " ind2=" ">' ' <subfield code="a">Review</subfield>' '</datafield>' ) # record/1509993 expected = [ 'review', ] result = hep.do(create_record(snippet)) assert validate(result['publication_type'], subschema) is None assert expected == result['publication_type'] expected = [ {'a': 'review'}, ] result = hep2marc.do(result) assert expected == result['980']
def test_document_type_from_980__a_handles_conference_paper(): schema = load_schema('hep') subschema = schema['properties']['document_type'] snippet = ( '<datafield tag="980" ind1=" " ind2=" ">' ' <subfield code="a">ConferencePaper</subfield>' '</datafield>' ) # record/1589240 expected = [ 'conference paper', ] result = hep.do(create_record(snippet)) assert validate(result['document_type'], subschema) is None assert expected == result['document_type'] expected = [ {'a': 'ConferencePaper'}, ] result = hep2marc.do(result) assert expected == result['980']
def test_document_type_from_980__a(): schema = load_schema('hep') subschema = schema['properties']['document_type'] snippet = ( '<datafield tag="980" ind1=" " ind2=" ">' ' <subfield code="a">Book</subfield>' '</datafield>' ) # record/1512050 expected = [ 'book', ] result = hep.do(create_record(snippet)) assert validate(result['document_type'], subschema) is None assert expected == result['document_type'] expected = [ {'a': 'Book'}, ] result = hep2marc.do(result) assert expected == result['980']
def test_collections_from_980__a_babar_analysis_document(): schema = load_schema('hep') subschema = schema['properties']['_collections'] snippet = ( '<datafield tag="980" ind1=" " ind2=" ">' ' <subfield code="a">BABAR-AnalysisDocument</subfield>' '</datafield>' ) # record/1598316 expected = [ 'BABAR Analysis Documents', ] result = hep.do(create_record(snippet)) assert validate(result['_collections'], subschema) is None assert expected == result['_collections'] expected = [ {'a': 'BABAR-AnalysisDocument'}, ] result = hep2marc.do(result) assert expected == result['980']
def test_editions_from_250__a(): schema = load_schema('hep') subschema = schema['properties']['editions'] snippet = ('<datafield tag="250" ind1=" " ind2=" ">' ' <subfield code="a">2nd ed.</subfield>' '</datafield>') # record/1383727 expected = [ '2nd ed.', ] result = hep.do(create_record(snippet)) assert validate(result['editions'], subschema) is None assert expected == result['editions'] expected = [ { 'a': '2nd ed.' }, ] result = hep2marc.do(result) assert expected == result['250']
def test_corporate_author_from_110__a(): schema = load_schema('hep') subschema = schema['properties']['corporate_author'] snippet = ('<datafield tag="110" ind1=" " ind2=" ">' ' <subfield code="a">CMS Collaboration</subfield>' '</datafield>') # record/1621218 expected = [ 'CMS Collaboration', ] result = hep.do(create_record(snippet)) assert validate(result['corporate_author'], subschema) is None assert expected == result['corporate_author'] expected = [ { 'a': 'CMS Collaboration' }, ] result = hep2marc.do(result) assert expected == result['110']
def test_documents_from_FFT_does_not_require_s(): schema = load_schema('hep') subschema = schema['properties']['documents'] snippet = ( '<datafield tag="FFT" ind1=" " ind2=" ">' ' <subfield code="a">http://www.mdpi.com/2218-1997/3/1/24/pdf</subfield>' ' <subfield code="d">Fulltext</subfield>' ' <subfield code="t">INSPIRE-PUBLIC</subfield>' '</datafield>' ) # DESY harvest expected = [ { 'key': 'document', 'fulltext': True, 'url': 'http://www.mdpi.com/2218-1997/3/1/24/pdf' } ] result = hep.do(create_record(snippet)) assert validate(result['documents'], subschema) is None assert expected == result['documents'] assert 'figures' not in result expected = [ { 'a': 'http://www.mdpi.com/2218-1997/3/1/24/pdf', 'd': 'Fulltext', 't': 'INSPIRE-PUBLIC', 'n': 'document', }, ] result = hep2marc.do(result) assert expected == result['FFT']
def test_languages_from_041__a(): schema = load_schema('hep') subschema = schema['properties']['languages'] snippet = ('<datafield tag="041" ind1=" " ind2=" ">' ' <subfield code="a">Italian</subfield>' '</datafield>') # record/1503566 expected = [ 'it', ] result = hep.do(create_record(snippet)) assert validate(result['languages'], subschema) is None assert expected == result['languages'] expected = [ { 'a': 'italian' }, ] result = hep2marc.do(result) assert expected == result['041']
def test_texkeys_from_035__a_9(): schema = load_schema('hep') subschema = schema['properties']['texkeys'] snippet = ('<datafield tag="035" ind1=" " ind2=" ">' ' <subfield code="9">INSPIRETeX</subfield>' ' <subfield code="a">Hagedorn:1963hdh</subfield>' '</datafield>') # record/1403324 expected = [ 'Hagedorn:1963hdh', ] result = hep.do(create_record(snippet)) assert validate(result['texkeys'], subschema) is None assert expected == result['texkeys'] expected = [{ '9': 'INSPIRETeX', 'a': 'Hagedorn:1963hdh', }] result = hep2marc.do(result) assert expected == result['035']
def test_book_series_from_490__a(): schema = load_schema('hep') subschema = schema['properties']['book_series'] snippet = ( '<datafield tag="490" ind1=" " ind2=" ">' ' <subfield code="a">Graduate Texts in Physics</subfield>' '</datafield>' ) # record/1508903 expected = [ {'title': 'Graduate Texts in Physics'}, ] result = hep.do(create_record(snippet)) assert validate(result['book_series'], subschema) is None assert expected == result['book_series'] expected = [ {'a': 'Graduate Texts in Physics'}, ] result = hep2marc.do(result) assert expected == result['490']
def test_accelerator_experiments_from_693__e_0_and_693__e_discards_single_dashes( ): schema = load_schema('hep') subschema = schema['properties']['accelerator_experiments'] snippet = ('<record>' ' <datafield tag="693" ind1=" " ind2=" ">' ' <subfield code="e">CERN-LHC-ATLAS</subfield>' ' <subfield code="0">1108541</subfield>' ' </datafield>' ' <datafield tag="693" ind1=" " ind2=" ">' ' <subfield code="e">-</subfield>' ' </datafield>' '</record>') # record/1503527 expected = [ { 'legacy_name': 'CERN-LHC-ATLAS', 'record': { '$ref': 'http://localhost:5000/api/experiments/1108541', }, }, ] result = hep.do(create_record(snippet)) assert validate(result['accelerator_experiments'], subschema) is None assert expected == result['accelerator_experiments'] expected = [ { 'e': 'CERN-LHC-ATLAS' }, ] result = hep2marc.do(result) assert expected == result['693']
def test_collections_from_980__a_hal_hidden(): schema = load_schema('hep') subschema = schema['properties']['_collections'] snippet = ( '<datafield tag="980" ind1=" " ind2=" ">' ' <subfield code="a">HALhidden</subfield>' '</datafield>' ) # record/1505341 expected = [ 'HAL Hidden', ] result = hep.do(create_record(snippet)) assert validate(result['_collections'], subschema) is None assert expected == result['_collections'] expected = [ {'a': 'HALhidden'}, ] result = hep2marc.do(result) assert expected == result['980']
def test_references_from_999C5a_h_o_s_x_y_0(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="a">doi:10.1142/S0217751X0804055X</subfield>' ' <subfield code="h">G.K. Leontaris</subfield>' ' <subfield code="o">15</subfield>' ' <subfield code="s">Int.J.Mod.Phys.,A23,2055</subfield>' ' <subfield code="x">Int. J. Mod. Phys. A 23 (doi:10.1142/S0217751X0804055X)</subfield>' ' <subfield code="y">2008</subfield>' ' <subfield code="0">780399</subfield>' '</datafield>') # record/1478478/export/xme expected = [ { 'curated_relation': False, 'record': { '$ref': 'http://localhost:5000/api/literature/780399', }, 'raw_refs': [ { 'value': 'Int. J. Mod. Phys. A 23 (doi:10.1142/S0217751X0804055X)', 'schema': 'text', }, ], 'reference': { 'dois': ['10.1142/S0217751X0804055X'], 'authors': [ { 'full_name': u'Leontaris, G.K.' }, ], 'label': '15', 'publication_info': { "artid": '2055', 'journal_title': 'Int.J.Mod.Phys.', 'journal_volume': 'A23', 'page_start': '2055', 'year': 2008, }, }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [{ 'a': [ 'doi:10.1142/S0217751X0804055X', ], 'h': [ 'Leontaris, G.K.', ], 'o': '15', 's': 'Int.J.Mod.Phys.,A23,2055', 'x': [ 'Int. J. Mod. Phys. A 23 (doi:10.1142/S0217751X0804055X)', ], 'y': 2008, '0': 780399, }] result = hep2marc.do(result) assert expected == result['999C5']
def test_references_from_999C5h_m_o_r_s_y_0(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="0">857215</subfield>' ' <subfield code="h">R. C. Myers and A. Sinha</subfield>' ' <subfield code="m">Seeing a c-theorem with holography ; [hep-th]</subfield>' ' <subfield code="o">10</subfield>' ' <subfield code="r">arXiv:1006.1263</subfield>' ' <subfield code="s">Phys.Rev.,D82,046006</subfield>' ' <subfield code="y">2010</subfield>' '</datafield>') # record/1498589/export/xme expected = [ { 'curated_relation': False, 'record': { '$ref': 'http://localhost:5000/api/literature/857215', }, 'reference': { 'arxiv_eprint': '1006.1263', 'authors': [ { 'full_name': u'Myers, R.C.' }, { 'full_name': u'Sinha, A.' }, ], 'label': '10', 'misc': [ 'Seeing a c-theorem with holography ; [hep-th]', ], 'publication_info': { 'artid': '046006', 'journal_title': 'Phys.Rev.', 'journal_volume': 'D82', 'year': 2010, }, }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [ { '0': 857215, 'h': [ 'Myers, R.C.', 'Sinha, A.', ], 'm': 'Seeing a c-theorem with holography ; [hep-th]', 'o': '10', 'r': [ 'arXiv:1006.1263', ], 's': 'Phys.Rev.,D82,046006', 'y': 2010, }, ] result = hep2marc.do(result) assert expected == result['999C5']
def test_references_from_999C5_0_h_m_o_r_t_y(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="0">674429</subfield>' ' <subfield code="h">R. Ardito et al.</subfield>' ' <subfield code="m">66</subfield>' ' <subfield code="o">57</subfield>' ' <subfield code="r">hep-ex/0501010</subfield>' ' <subfield code="t">CUORE: A Cryogenic underground Observatory for Rare Events</subfield>' ' <subfield code="y">2005</subfield>' '</datafield>') # record/1615506 expected = [ { 'curated_relation': False, 'record': { '$ref': 'http://localhost:5000/api/literature/674429', }, 'reference': { 'arxiv_eprint': 'hep-ex/0501010', 'authors': [ { 'full_name': 'Ardito, R.' }, ], 'label': '57', 'misc': [ '66', ], 'publication_info': { 'year': 2005 }, 'title': { 'title': 'CUORE: A Cryogenic underground Observatory for Rare Events' }, }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [ { '0': 674429, 'h': [ 'Ardito, R.', ], 'm': '66', 'o': '57', 'r': [ 'hep-ex/0501010', ], 't': 'CUORE: A Cryogenic underground Observatory for Rare Events', 'y': 2005, }, ] result = hep2marc.do(result) assert expected == result['999C5']
def test_references_from_999C5h_k_double_m_o_s_y_0(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="h">W, Schoutens.</subfield>' ' <subfield code="k">Bouwknegt:1992wg</subfield>' ' <subfield code="m">Peter Bouwknegt and Kareljan</subfield>' ' <subfield code="m">symmetry in conformal field theory</subfield>' ' <subfield code="o">12</subfield>' ' <subfield code="s">Phys.Rept.,223,183-276</subfield>' ' <subfield code="y">1993</subfield>' ' <subfield code="0">338634</subfield>' '</datafield>') # record/1613562/export/xme expected = [ { 'curated_relation': False, 'record': { '$ref': 'http://localhost:5000/api/literature/338634', }, 'reference': { 'authors': [ { 'full_name': 'Schoutens.,' }, ], 'label': '12', 'misc': [ 'Peter Bouwknegt and Kareljan', 'symmetry in conformal field theory', ], 'publication_info': { 'journal_title': 'Phys.Rept.', 'journal_volume': '223', 'page_start': '183', 'page_end': '276', 'year': 1993, }, 'texkey': 'Bouwknegt:1992wg', }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [ { '0': 338634, 'h': [ 'Schoutens.,', ], 'k': 'Bouwknegt:1992wg', 'm': 'Peter Bouwknegt and Kareljan / symmetry in conformal field theory', 'o': '12', 's': 'Phys.Rept.,223,183-276', 'y': 1993, }, ] result = hep2marc.do(result) assert expected == result['999C5']
def test_references_from_999C5d_multiple_h_o_r_0_9(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ('<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="0">568216</subfield>' ' <subfield code="9">CURATOR</subfield>' ' <subfield code="d">eprint</subfield>' ' <subfield code="h">Y. Yan</subfield>' ' <subfield code="h">R. Tegen</subfield>' ' <subfield code="h">T. Gutsche</subfield>' ' <subfield code="h">V. E. Lyubovitskij</subfield>' ' <subfield code="h">A. Faessler</subfield>' ' <subfield code="o">20</subfield>' ' <subfield code="r">hep-ph/0112168v2</subfield>' '</datafield>') # record/1410105 expected = [ { 'curated_relation': False, 'record': { '$ref': 'http://localhost:5000/api/literature/568216', }, 'reference': { 'arxiv_eprint': 'hep-ph/0112168', 'authors': [ { 'full_name': 'Yan, Y.' }, { 'full_name': 'Tegen, R.' }, { 'full_name': 'Gutsche, T.' }, { 'full_name': 'Lyubovitskij, V.E.' }, { 'full_name': 'Faessler, A.' }, ], 'label': '20', }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [ { '0': 568216, 'h': [ 'Yan, Y.', 'Tegen, R.', 'Gutsche, T.', 'Lyubovitskij, V.E.', 'Faessler, A.', ], 'o': '20', 'r': [ 'hep-ph/0112168', ], }, ] result = hep2marc.do(result) assert expected == result['999C5']
def test_references_from_999C5a_h_i_m_o_p_y_9(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="o">16</subfield>' ' <subfield code="h">A. Del Guerra</subfield>' ' <subfield code="m">Ionizing Radiation Detectors for Medical Imaging Crossref:</subfield>' ' <subfield code="p">World Scientific</subfield>' ' <subfield code="i">9812562621</subfield>' ' <subfield code="a">doi:10.1142/5408</subfield>' ' <subfield code="y">2004</subfield>' ' <subfield code="9">refextract</subfield>' '</datafield>') # record/1593684 expected = [ { 'reference': { 'authors': [ { 'full_name': 'Guerra, A.Del' }, # XXX: wrong. ], 'dois': [ '10.1142/5408', ], 'imprint': { 'publisher': 'World Scientific' }, 'isbn': '9789812562623', 'label': '16', 'misc': [ 'Ionizing Radiation Detectors for Medical Imaging Crossref:', ], 'publication_info': { 'year': 2004 }, }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [ { 'a': [ 'doi:10.1142/5408', ], 'h': [ 'Guerra, A.Del', # XXX: wrong ], 'i': '9789812562623', 'm': 'Ionizing Radiation Detectors for Medical Imaging Crossref:', 'o': '16', 'p': 'World Scientific', 'y': 2004, }, ] result = hep2marc.do(result) assert expected == result['999C5']
def test_references_from_999C5b_h_m_o_p_t_y_9(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="9">CURATOR</subfield>' ' <subfield code="b">C93-06-08</subfield>' ' <subfield code="h">C. Gaspar</subfield>' ' <subfield code="m">Real Time Conference,, Vancouver, Canada</subfield>' ' <subfield code="o">7</subfield>' ' <subfield code="p">IEEE</subfield>' ' <subfield code="t">DIM - A Distributed Information Management System for the Delphi experiment at CERN</subfield>' ' <subfield code="y">1993</subfield>' '</datafield>') # record/1481519 expected = [ { 'reference': { 'authors': [ { 'full_name': 'Gaspar, C.' }, ], 'imprint': { 'publisher': 'IEEE' }, 'label': '7', 'misc': [ 'Real Time Conference,, Vancouver, Canada', ], 'publication_info': { 'cnum': 'C93-06-08', 'year': 1993, }, 'title': { 'title': 'DIM - A Distributed Information Management System for the Delphi experiment at CERN' }, }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [ { 'b': 'C93-06-08', 'h': [ 'Gaspar, C.', ], 'm': 'Real Time Conference,, Vancouver, Canada', 'o': '7', 'p': 'IEEE', 't': 'DIM - A Distributed Information Management System for the Delphi experiment at CERN', 'y': 1993, }, ] result = hep2marc.do(result) assert expected == result['999C5']
def test_reference_from_999C5o_h_c_t_s_r_y_0(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="o">36</subfield>' ' <subfield code="h">S. Chatrchyan et al.</subfield>' ' <subfield code="c">CMS Collaboration</subfield>' ' <subfield code="t">Angular analysis and branching fraction measurement of the decay B0 → K∗0 µ+ µ-</subfield>' ' <subfield code="s">Phys.Lett.,B727,77</subfield>' ' <subfield code="r">arXiv:1308.3409 [hep-ex]</subfield>' ' <subfield code="y">2013</subfield>' ' <subfield code="0">1247976</subfield>' '</datafield>') # record/1591975 expected = [{ 'curated_relation': False, 'record': { '$ref': 'http://localhost:5000/api/literature/1247976' }, 'reference': { 'arxiv_eprint': '1308.3409', 'authors': [{ 'full_name': u'Chatrchyan, S.' }], 'collaborations': ['CMS Collaboration'], 'label': '36', 'publication_info': { 'artid': '77', 'journal_title': 'Phys.Lett.', 'journal_volume': 'B727', 'page_start': '77', 'year': 2013, }, 'title': { 'title': u'Angular analysis and branching fraction measurement of the decay B0 → K∗0 µ+ µ-' }, } }] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [{ '0': 1247976, 'c': [ 'CMS Collaboration', ], 'h': [ 'Chatrchyan, S.', ], 'o': '36', 'r': [ 'arXiv:1308.3409', ], 's': 'Phys.Lett.,B727,77', 't': u'Angular analysis and branching fraction measurement of the decay B0 → K∗0 µ+ µ-', 'y': 2013, }] result = hep2marc.do(result) assert expected == result['999C5']
def test_authors_from_100__a_u_w_y_and_700_a_u_w_x_y(): schema = load_schema('hep') subschema = schema['properties']['authors'] snippet = ('<record>' ' <datafield tag="100" ind1=" " ind2=" ">' ' <subfield code="a">Kobayashi, Makoto</subfield>' ' <subfield code="u">Kyoto U.</subfield>' ' <subfield code="w">M.Kobayashi.5</subfield>' ' <subfield code="y">0</subfield>' ' </datafield>' ' <datafield tag="700" ind1=" " ind2=" ">' ' <subfield code="a">Maskawa, Toshihide</subfield>' ' <subfield code="u">Kyoto U.</subfield>' ' <subfield code="w">T.Maskawa.1</subfield>' ' <subfield code="x">998493</subfield>' ' <subfield code="y">1</subfield>' ' </datafield>' '</record>') # record/81350/export/xme expected = [ { 'affiliations': [ { 'value': 'Kyoto U.', }, ], 'full_name': 'Kobayashi, Makoto', 'ids': [ { 'schema': 'INSPIRE BAI', 'value': 'M.Kobayashi.5', }, ], }, { 'affiliations': [ { 'value': 'Kyoto U.', }, ], 'curated_relation': True, 'full_name': 'Maskawa, Toshihide', 'ids': [ { 'schema': 'INSPIRE BAI', 'value': 'T.Maskawa.1', }, ], 'record': { '$ref': 'http://localhost:5000/api/authors/998493', }, }, ] result = hep.do(create_record(snippet)) assert validate(result['authors'], subschema) is None assert expected == result['authors'] expected_100 = { 'a': 'Kobayashi, Makoto', 'u': [ 'Kyoto U.', ], } expected_700 = [ { 'a': 'Maskawa, Toshihide', 'u': [ 'Kyoto U.', ], }, ] result = hep2marc.do(result) assert expected_100 == result['100'] assert expected_700 == result['700']
def test_references_from_999C50_h_m_o_r_y(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="0">701721</subfield>' ' <subfield code="h">A. Ferrari, P.R. Sala, A. Fasso, and J. Ranft</subfield>' ' <subfield code="m">FLUKA: a multi-particle transport code, CERN-10 , INFN/TC_05/11</subfield>' ' <subfield code="o">13</subfield>' ' <subfield code="r">SLAC-R-773</subfield>' ' <subfield code="y">2005</subfield>' '</datafield>') # record/1478478/export/xme expected = [ { 'curated_relation': False, 'record': { '$ref': 'http://localhost:5000/api/literature/701721', }, 'reference': { 'authors': [ { 'full_name': 'Ferrari, A.' }, { 'full_name': 'Sala, P.R.' }, { 'full_name': 'Fasso, A.' }, { 'full_name': 'Ranft, J.' }, ], 'label': '13', 'misc': [ 'FLUKA: a multi-particle transport code, CERN-10 , INFN/TC_05/11', ], 'publication_info': { 'year': 2005 }, 'report_numbers': [ 'SLAC-R-773', ], }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [{ '0': 701721, 'h': [ 'Ferrari, A.', 'Sala, P.R.', 'Fasso, A.', 'Ranft, J.', ], 'm': 'FLUKA: a multi-particle transport code, CERN-10 , INFN/TC_05/11', 'r': [ 'SLAC-R-773', ], 'o': '13', 'y': 2005, }] result = hep2marc.do(result) assert expected == result['999C5']
def test_references_from_999C50_9_r_u_h_m_o(): schema = load_schema('hep') subschema = schema['properties']['references'] snippet = ( '<datafield tag="999" ind1="C" ind2="5">' ' <subfield code="0">1511470</subfield>' ' <subfield code="9">CURATOR</subfield>' ' <subfield code="r">urn:nbn:de:hebis:77-diss-1000009520</subfield>' ' <subfield code="u">http://www.diss.fu-berlin.de/diss/receive/FUDISS_thesis_000000094316</subfield>' ' <subfield code="h">K. Wiebe</subfield>' ' <subfield code="m">Ph.D. thesis, University of Mainz, in preparation</subfield>' ' <subfield code="o">51</subfield>' '</datafield>') # record/1504897 expected = [ { 'curated_relation': False, 'record': { '$ref': 'http://localhost:5000/api/literature/1511470', }, 'reference': { 'authors': [ { 'full_name': 'Wiebe, K.' }, ], 'label': '51', 'misc': [ 'Ph.D. thesis, University of Mainz, in preparation', ], 'report_numbers': [ 'urn:nbn:de:hebis:77-diss-1000009520', ], 'urls': [ { 'value': 'http://www.diss.fu-berlin.de/diss/receive/FUDISS_thesis_000000094316' }, ], }, }, ] result = hep.do(create_record(snippet)) assert validate(result['references'], subschema) is None assert expected == result['references'] expected = [ { '0': 1511470, 'h': [ 'Wiebe, K.', ], 'r': [ 'urn:nbn:de:hebis:77-diss-1000009520', ], 'm': 'Ph.D. thesis, University of Mainz, in preparation', 'o': '51', 'u': [ 'http://www.diss.fu-berlin.de/diss/receive/FUDISS_thesis_000000094316', ], }, ] result = hep2marc.do(result) assert expected == result['999C5']
def test_authors_from_100__a_j_m_u_v_w_y(): schema = load_schema('hep') subschema = schema['properties']['authors'] snippet = ( '<datafield tag="100" ind1=" " ind2=" ">' ' <subfield code="a">MacNair, David</subfield>' ' <subfield code="j">JACoW-00009522</subfield>' ' <subfield code="m">[email protected]</subfield>' ' <subfield code="u">SLAC</subfield>' ' <subfield code="v">SLAC, Menlo Park, California, USA</subfield>' ' <subfield code="w">D.Macnair.2</subfield>' ' <subfield code="y">0</subfield>' '</datafield>') expected = [ { 'affiliations': [ { 'value': 'SLAC' }, ], 'emails': [ '*****@*****.**', ], 'full_name': 'MacNair, David', 'ids': [ { 'schema': 'JACOW', 'value': 'JACoW-00009522', }, { 'schema': 'INSPIRE BAI', 'value': 'D.Macnair.2', }, ], 'raw_affiliations': [{ 'value': 'SLAC, Menlo Park, California, USA' }], }, ] result = hep.do(create_record(snippet)) assert validate(result['authors'], subschema) is None assert expected == result['authors'] expected = { 'a': 'MacNair, David', 'j': [ 'JACoW-00009522', ], 'm': [ '*****@*****.**', ], 'u': [ 'SLAC', ], 'v': [ 'SLAC, Menlo Park, California, USA', ], } result = hep2marc.do(result) assert expected == result['100']