def test_unimarctotitlesProper(): """Test dojson marc21titlesProper.""" marc21xml = """ <record> <datafield tag="500" ind1="1" ind2="0"> <subfield code="a">proper title</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('titlesProper') == ['proper title'] marc21xml = """ <record> <datafield tag="500" ind1=" " ind2=" "> <subfield code="a">proper title</subfield> </datafield> <datafield tag="500" ind1=" " ind2=" "> <subfield code="a">other proper title</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('titlesProper') == ['proper title', 'other proper title']
def test_marc21notes(): """Test dojson notes.""" marc21xml = """ <record> <datafield tag="300" ind1=" " ind2=" "> <subfield code="a">note</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('notes') == ['note'] marc21xml = """ <record> <datafield tag="300" ind1=" " ind2=" "> <subfield code="a">note 1</subfield> </datafield> <datafield tag="300" ind1=" " ind2=" "> <subfield code="a">note 2</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('notes') == ['note 1', 'note 2']
def test_marc21publishers_publicationDate(): """Test dojson publishers publicationDate.""" marc21xml = """ <record> <datafield tag="210" ind1=" " ind2=" "> <subfield code="a">Lausanne</subfield> <subfield code="c">Payot</subfield> <subfield code="d">2015</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('publishers') == [{ 'place': ['Lausanne'], 'name': ['Payot'], }] assert data.get('publicationYear') == 2015 marc21xml = """ <record> <datafield tag="210" ind1=" " ind2=" "> <subfield code="a">Paris</subfield> <subfield code="a">Lausanne</subfield> <subfield code="c">Payot</subfield> <subfield code="d">1920</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('publishers') == [{ 'place': ['Paris', 'Lausanne'], 'name': ['Payot'], }] assert data.get('publicationYear') == 1920 marc21xml = """ <record> <datafield tag="210" ind1=" " ind2=" "> <subfield code="a">Paris</subfield> <subfield code="c">Champion</subfield> <subfield code="a">Genève</subfield> <subfield code="c">Droz</subfield> <subfield code="d">1912-1955</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('publishers') == [{ 'place': ['Paris'], 'name': ['Champion'] }, { 'place': ['Genève'], 'name': ['Droz'] }] assert data.get('freeFormedPublicationDate') == '1912-1955' assert data.get('publicationYear') == 1912
def test_unimarctoauthors(): """Test dojson unimarctoauthors.""" marc21xml = """ <record> <datafield tag="700" ind1=" " ind2=" "> <subfield code="a">Jean-Paul</subfield> <subfield code="d">II</subfield> <subfield code="c">Pape</subfield> <subfield code="f">1954 -</subfield> </datafield> <datafield tag="701" ind1=" " ind2=" "> <subfield code="a">Dumont</subfield> <subfield code="b">Jean</subfield> <subfield code="c">Historien</subfield> <subfield code="f">1921 - 2014</subfield> </datafield> <datafield tag="702" ind1=" " ind2=" "> <subfield code="a">Dicker</subfield> <subfield code="b">J.</subfield> <subfield code="f">1921 -</subfield> </datafield> <datafield tag="710" ind1=" " ind2=" "> <subfield code="a">RERO</subfield> </datafield> <datafield tag="711" ind1=" " ind2=" "> <subfield code="a">LOC</subfield> </datafield> <datafield tag="712" ind1=" " ind2=" "> <subfield code="a">BNF</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) authors = data.get('authors') assert authors == [{ 'name': 'Jean-Paul II', 'type': 'person', 'date': '1954 -', 'qualifier': 'Pape' }, { 'name': 'Dumont, Jean', 'type': 'person', 'date': '1921 - 2014', 'qualifier': 'Historien' }, { 'name': 'Dicker, J.', 'type': 'person', 'date': '1921 -' }, { 'name': 'RERO', 'type': 'organisation' }, { 'name': 'LOC', 'type': 'organisation' }, { 'name': 'BNF', 'type': 'organisation' }]
def test_marc21languages(): """Test dojson marc21languages.""" marc21xml = """ <record> <datafield tag="101" ind1=" " ind2=" "> <subfield code="a">eng</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('languages') == [{'language': 'eng'}] marc21xml = """ <record> <datafield tag="101" ind1=" " ind2=" "> <subfield code="a">eng</subfield> <subfield code="a">fre</subfield> <subfield code="c">ita</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('languages') == [{'language': 'eng'}, {'language': 'fre'}] assert data.get('translatedFrom') == ['ita'] marc21xml = """ <record> <datafield tag="101" ind1=" " ind2=" "> <subfield code="a">eng</subfield> <subfield code="a">???</subfield> <subfield code="c">ita</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('languages') == [ { 'language': 'eng' }, ] assert data.get('translatedFrom') == ['ita']
def test_marc21abstract(): """Test dojson abstract.""" marc21xml = """ <record> <datafield tag="330" ind1=" " ind2=" "> <subfield code="a">This book is about</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('abstracts') == ["This book is about"]
def test_unimarctotitle(): """Test dojson unimarctotitle.""" # subfields $a $b $c marc21xml = """ <record> <datafield tag="200" ind1="1" ind2="0"> <subfield code="a">main title</subfield> <subfield code="e">subtitle</subfield> <subfield code="f">responsability</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('title') == 'main title : subtitle' # subfields $a $c marc21xml = """ <record> <datafield tag="200" ind1="1" ind2="0"> <subfield code="a">main title</subfield> <subfield code="f">responsability</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('title') == 'main title' # subfield $a marc21xml = """ <record> <datafield tag="200" ind1="1" ind2="0"> <subfield code="a">main title</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('title') == 'main title'
def test_marc21description(): """Test dojson extent, otherMaterialCharacteristics, formats.""" marc21xml = """ <record> <datafield tag="215" ind1=" " ind2=" "> <subfield code="a">116 p.</subfield> <subfield code="c">ill.</subfield> <subfield code="d">22 cm</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('extent') == '116 p.' assert data.get('otherMaterialCharacteristics') == 'ill.' assert data.get('formats') == ['22 cm'] marc21xml = """ <record> <datafield tag="215" ind1=" " ind2=" "> <subfield code="a">116 p.</subfield> <subfield code="c">ill.</subfield> <subfield code="d">22 cm</subfield> <subfield code="d">12 x 15</subfield> </datafield> <datafield tag="215" ind1=" " ind2=" "> <subfield code="a">200 p.</subfield> <subfield code="c">ill.</subfield> <subfield code="d">19 cm</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('extent') == '116 p.' assert data.get('otherMaterialCharacteristics') == 'ill.' assert data.get('formats') == ['22 cm', '12 x 15']
def test_marc21identifiers(): """Test dojson identifiers.""" marc21xml = """ <record> <controlfield tag="003"> http://catalogue.bnf.fr/ark:/12148/cb350330441<controlfield> <datafield tag="073" ind1=" " ind2=" "> <subfield code="a">9782370550163</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('identifiers') == { 'bnfID': 'cb350330441', 'isbn': '9782370550163' }
def test_marc21subjects(): """Test dojson subjects.""" marc21xml = """ <record> <datafield tag="600" ind1=" " ind2=" "> <subfield code="a">subjects 600</subfield> </datafield> <datafield tag="616" ind1=" " ind2=" "> <subfield code="a">Capet</subfield> <subfield code="b">Louis</subfield> <subfield code="c">Jr.</subfield> <subfield code="d">III</subfield> <subfield code="f">1700-1780</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('subjects') == [ 'subjects 600', 'Capet, Louis III, Jr., 1700-1780' ]
def test_marc21series(): """Test dojson series.""" marc21xml = """ <record> <datafield tag="225" ind1=" " ind2=" "> <subfield code="a">Collection One</subfield> <subfield code="v">5</subfield> </datafield> <datafield tag="225" ind1=" " ind2=" "> <subfield code="a">Collection Two</subfield> <subfield code="v">123</subfield> </datafield> </record> """ marc21json = create_record(marc21xml) data = unimarctojson.do(marc21json) assert data.get('series') == [{ 'name': 'Collection One', 'number': '5' }, { 'name': 'Collection Two', 'number': '123' }]
def test_unimarctotype(): """ Test dojson marc21_to_type. Books: LDR/6-7: am Journals: LDR/6-7: as Articles: LDR/6-7: aa + add field 773 (journal title) Scores: LDR/6: c|d Videos: LDR/6: g + 007/0: m|v Sounds: LDR/6: i|j E-books (imported from Cantook) """ unimarcxml = """ <record> <leader>00501nam a2200133 a 4500</leader> </record> """ unimarcjson = create_record(unimarcxml) data = unimarctojson.do(unimarcjson) assert data.get('type') == 'book' unimarcxml = """ <record> <leader>00501nas a2200133 a 4500</leader> </record> """ unimarcjson = create_record(unimarcxml) data = unimarctojson.do(unimarcjson) assert data.get('type') == 'journal' unimarcxml = """ <record> <leader>00501naa a2200133 a 4500</leader> </record> """ unimarcjson = create_record(unimarcxml) data = unimarctojson.do(unimarcjson) assert data.get('type') == 'article' unimarcxml = """ <record> <leader>00501nca a2200133 a 4500</leader> </record> """ unimarcjson = create_record(unimarcxml) data = unimarctojson.do(unimarcjson) assert data.get('type') == 'score' unimarcxml = """ <record> <leader>00501nda a2200133 a 4500</leader> </record> """ unimarcjson = create_record(unimarcxml) data = unimarctojson.do(unimarcjson) assert data.get('type') == 'score' unimarcxml = """ <record> <leader>00501nia a2200133 a 4500</leader> </record> """ unimarcjson = create_record(unimarcxml) data = unimarctojson.do(unimarcjson) assert data.get('type') == 'sound' unimarcxml = """ <record> <leader>00501nja a2200133 a 4500</leader> </record> """ unimarcjson = create_record(unimarcxml) data = unimarctojson.do(unimarcjson) assert data.get('type') == 'sound' unimarcxml = """ <record> <leader>00501nga a2200133 a 4500</leader> </record> """ unimarcjson = create_record(unimarcxml) data = unimarctojson.do(unimarcjson) assert data.get('type') == 'video'