Files
BibAPI/tests/conftest.py
WorldTeacher 2a98718699
Some checks failed
/ typecheck (pull_request) Failing after 11s
tests: add more tests
2025-12-09 09:17:13 +01:00

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>"""