152 lines
6.1 KiB
Python
152 lines
6.1 KiB
Python
"""Shared pytest fixtures for BibAPI tests."""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_marc_record_xml() -> str:
|
|
"""Sample MARC record XML for testing."""
|
|
return """<?xml version="1.0" encoding="UTF-8"?>
|
|
<marc:record xmlns:marc="http://www.loc.gov/MARC21/slim">
|
|
<marc:leader>00000nam a22000001i 4500</marc:leader>
|
|
<marc:controlfield tag="001">123456789</marc:controlfield>
|
|
<marc:controlfield tag="005">20230101120000.0</marc:controlfield>
|
|
<marc:datafield tag="020" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">9783123456789</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="041" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">ger</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="245" ind1="1" ind2="0">
|
|
<marc:subfield code="a">Test Book Title</marc:subfield>
|
|
<marc:subfield code="b">A Subtitle</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="250" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">2nd edition</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="264" ind1=" " ind2="1">
|
|
<marc:subfield code="a">Berlin</marc:subfield>
|
|
<marc:subfield code="b">Test Publisher</marc:subfield>
|
|
<marc:subfield code="c">2023</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="300" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">456 pages</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="338" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">Band</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="700" ind1="1" ind2=" ">
|
|
<marc:subfield code="a">Author, Test</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="924" ind1=" " ind2=" ">
|
|
<marc:subfield code="9">Frei 129</marc:subfield>
|
|
<marc:subfield code="g">ABC 123</marc:subfield>
|
|
<marc:subfield code="b">DE-Frei129</marc:subfield>
|
|
</marc:datafield>
|
|
</marc:record>"""
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_sru_response_xml() -> bytes:
|
|
"""Sample SRU searchRetrieveResponse XML for testing."""
|
|
return b"""<?xml version="1.0" encoding="UTF-8"?>
|
|
<zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/"
|
|
xmlns:marc="http://www.loc.gov/MARC21/slim">
|
|
<zs:version>1.1</zs:version>
|
|
<zs:numberOfRecords>1</zs:numberOfRecords>
|
|
<zs:records>
|
|
<zs:record>
|
|
<zs:recordSchema>marcxml</zs:recordSchema>
|
|
<zs:recordPacking>xml</zs:recordPacking>
|
|
<zs:recordData>
|
|
<marc:record>
|
|
<marc:leader>00000nam a22</marc:leader>
|
|
<marc:controlfield tag="001">123456789</marc:controlfield>
|
|
<marc:datafield tag="020" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">9783123456789</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="041" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">ger</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="245" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">Test Book</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="250" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">1st edition</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="264" ind1=" " ind2="1">
|
|
<marc:subfield code="b">Publisher</marc:subfield>
|
|
<marc:subfield code="c">2023</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="300" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">200 pages</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="338" ind1=" " ind2=" ">
|
|
<marc:subfield code="a">Band</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="700" ind1="1" ind2=" ">
|
|
<marc:subfield code="a">Author, Test</marc:subfield>
|
|
</marc:datafield>
|
|
<marc:datafield tag="924" ind1=" " ind2=" ">
|
|
<marc:subfield code="b">DE-Frei129</marc:subfield>
|
|
</marc:datafield>
|
|
</marc:record>
|
|
</zs:recordData>
|
|
<zs:recordPosition>1</zs:recordPosition>
|
|
</zs:record>
|
|
</zs:records>
|
|
<zs:echoedSearchRetrieveRequest>
|
|
<zs:version>1.1</zs:version>
|
|
<zs:query>pica.tit=Test</zs:query>
|
|
<zs:maximumRecords>100</zs:maximumRecords>
|
|
<zs:recordPacking>xml</zs:recordPacking>
|
|
<zs:recordSchema>marcxml</zs:recordSchema>
|
|
</zs:echoedSearchRetrieveRequest>
|
|
</zs:searchRetrieveResponse>"""
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_catalogue_html() -> str:
|
|
"""Sample HTML response from catalogue search."""
|
|
return """<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<a class="title getFull" href="/opac/record/123">Book Title</a>
|
|
</body>
|
|
</html>"""
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_catalogue_detail_html() -> str:
|
|
"""Sample HTML response from catalogue book detail page."""
|
|
return """<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<div class="headline text">Test Book Title</div>
|
|
<div class="col-xs-12 col-md-5 col-lg-4 rds-dl-head RDS_PPN"></div>
|
|
<div class="col-xs-12 col-md-7 col-lg-8 rds-dl-panel">123456789</div>
|
|
<div class="col-xs-12 col-md-5 col-lg-4 rds-dl-head RDS_EDITION"></div>
|
|
<div class="col-xs-12 col-md-7 col-lg-8 rds-dl-panel">2nd ed.</div>
|
|
<div class="col-xs-12 col-md-5 col-lg-4 rds-dl-head RDS_PERSON"></div>
|
|
<div class="col-xs-12 col-md-7 col-lg-8 rds-dl-panel">
|
|
<a href="#">Author One</a>
|
|
<a href="#">Author Two</a>
|
|
</div>
|
|
<div class="panel-body">
|
|
<div class="rds-dl RDS_SIGNATURE">
|
|
<div class="rds-dl-panel">ABC 123</div>
|
|
</div>
|
|
<div class="rds-dl RDS_STATUS">
|
|
<div class="rds-dl-panel">Available</div>
|
|
</div>
|
|
<div class="rds-dl RDS_LOCATION">
|
|
<div class="rds-dl-panel">Main Library</div>
|
|
</div>
|
|
</div>
|
|
<div class="RDS_ISBN"></div>
|
|
<div class="col-xs-12 col-md-7 col-lg-8 rds-dl-panel">9783123456789</div>
|
|
<div class="RDS_SCOPE"></div>
|
|
<div class="col-xs-12 col-md-7 col-lg-8 rds-dl-panel">300 pages</div>
|
|
</body>
|
|
</html>"""
|