Пример #1
0
 def test_search_reserveId_empty_keyword(self):
     err_msg = "Missing reserve id keyword argument."
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError) as exc:
             session.search_reserveId("")
         assert err_msg in str(exc.value)
Пример #2
0
 def test_search_isbns_empty_list(self):
     err_msg = "Missing keywords argument."
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError) as exc:
             session.search_isbns([])
         assert err_msg in str(exc.value)
Пример #3
0
 def test_search_reserveId_invalid_keyword(self, arg):
     err_msg = "Reserve id keyword argument must be a string."
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError) as exc:
             session.search_reserveId(arg)
         assert err_msg in str(exc.value)
Пример #4
0
 def test_search_isbns_invalid_keywords_type(self, arg):
     err_msg = "ISBN keywords argument must be a list."
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError) as exc:
             session.search_isbns(arg)
         assert err_msg in str(exc.value)
Пример #5
0
 def test_prep_sierra_number_exceptions(self, arg):
     err_msg = "Invalid Sierra bib number passed."
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError) as exc:
             session._prep_sierra_number(arg)
         assert err_msg in str(exc.value)
Пример #6
0
 def test_find_expired_econtent_invalid_args(self, arg1, arg2):
     err_msg = "Invalid type of arguments passed."
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError) as exc:
             session.find_expired_econtent(rows=arg1, result_page=arg2)
         assert err_msg in str(exc.value)
Пример #7
0
def get_bpl_sierra_bib_data(sbids: List[int]) -> Iterator[namedtuple]:
    """
    Queries BPL Solr by Sierra bib number

    Args:
        sbids:                  list of Sierra bib numbers without the "b" prefix

    Yields:
        meta
    """
    with SolrSession(
        authorization=os.environ["solr-client-key"],
        endpoint=os.environ["solr-endpoint"],
        agent=f"{__title__}/{__version__}",
    ) as session:
        for sbid in sbids:
            try:
                response = session.search_bibNo(
                    keyword=sbid,
                    default_response_fields=False,
                    response_fields=RESPONSE_FIELDS,
                )
            except BookopsSolrError as exc:
                raise NightShiftError(f"Solr request error: {exc}")
            try:
                meta = SolrResponseReader(response).meta
            except NightShiftError:
                raise
            else:
                yield meta
Пример #8
0
 def test_find_expired_econtent_too_many_rows(
         self, arg, mock_successful_session_get_response):
     err_msg = "Rows argument must be bigger than 1 and no larger than 100."
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError) as exc:
             session.find_expired_econtent(rows=arg)
         assert err_msg in str(exc.value)
Пример #9
0
    def test_search_isbns(self, live_key):
        with SolrSession(authorization=live_key.client_key,
                         endpoint=live_key.endpoint) as session:
            response = session.search_isbns(
                ["9780810984912", "9781419741890", "0810984911"])

            assert "Client-Key" in response.request.headers
            assert response.status_code == 200
            assert (
                response.url ==
                "https://www.bklynlibrary.org/solr/api/select/?rows=10&fq=ss_type%3Acatalog&q=isbn%3A9780810984912+OR+9781419741890+OR+0810984911&fl=id%2Ctitle%2Cauthor_raw%2CpublishYear%2Ccreated_date%2Cmaterial_type%2Ccall_number%2Cisbn%2Clanguage%2Ceprovider%2Cecontrolnumber%2Ceurl%2Cdigital_avail_type%2Cdigital_copies_owned"
            )
Пример #10
0
    def test_search_reserveId(self, live_key):
        with SolrSession(authorization=live_key.client_key,
                         endpoint=live_key.endpoint) as session:
            response = session.search_reserveId(
                "8CD53ED9-CEBD-4F78-8BEF-20A58F6F3857")

            assert "Client-Key" in response.request.headers
            assert response.status_code == 200
            assert (
                response.url ==
                "https://www.bklynlibrary.org/solr/api/select/?rows=10&fq=ss_type%3Acatalog&q=econtrolnumber%3A8CD53ED9-CEBD-4F78-8BEF-20A58F6F3857&fl=id%2Ctitle%2Cauthor_raw%2CpublishYear%2Ccreated_date%2Cmaterial_type%2Ccall_number%2Cisbn%2Clanguage%2Ceprovider%2Cecontrolnumber%2Ceurl%2Cdigital_avail_type%2Cdigital_copies_owned"
            )
Пример #11
0
    def test_find_expired_econtent(self, arg1, arg2, live_key):
        with SolrSession(authorization=live_key.client_key,
                         endpoint=live_key.endpoint) as session:
            response = session.find_expired_econtent(rows=arg1,
                                                     result_page=arg2)

            assert "Client-Key" in response.request.headers
            assert response.status_code == 200
            assert (
                response.url ==
                f"https://www.bklynlibrary.org/solr/api/select/?rows={arg1}&fq=ss_type%3Acatalog&q=digital_copies_owned%3A0+AND+digital_avail_type%3ANormal&start={arg2}&fl=id%2Ctitle%2Cauthor_raw%2CpublishYear%2Ccreated_date%2Cmaterial_type%2Ccall_number%2Cisbn%2Clanguage%2Ceprovider%2Cecontrolnumber%2Ceurl%2Cdigital_avail_type%2Cdigital_copies_owned"
            )
Пример #12
0
 def test_prep_response_fields_exception(self, arg):
     err_msg = "Invalid type of 'reposponse_format' argument."
     session = SolrSession("my_client_key", "example.com")
     with pytest.raises(BookopsSolrError) as exc:
         session._prep_response_fields(arg)
     assert err_msg in str(exc.value)
     session.close()
Пример #13
0
 def test_send_request_payload_errors(self, arg):
     err_msg = "Missing or invalid payload argument."
     session = SolrSession("my_client_key", "example.com")
     with pytest.raises(BookopsSolrError) as exc:
         session._send_request(arg)
     assert err_msg in str(exc.value)
     session.close()
Пример #14
0
    def test_search_bibNo(self, live_key):
        with SolrSession(authorization=live_key.client_key,
                         endpoint=live_key.endpoint) as session:
            response = session.search_bibNo("b10000017a")

            assert "Client-Key" in response.request.headers
            assert response.status_code == 200
            assert (
                response.url ==
                "https://www.bklynlibrary.org/solr/api/select/?rows=10&fq=ss_type%3Acatalog&q=id%3A10000017&fl=id%2Ctitle%2Cauthor_raw%2CpublishYear%2Ccreated_date%2Cmaterial_type%2Ccall_number%2Cisbn%2Clanguage%2Ceprovider%2Cecontrolnumber%2Ceurl%2Cdigital_avail_type%2Cdigital_copies_owned"
            )
            assert response.json()["response"]["numFound"] == 1
            assert response.json()["response"]["docs"][0]["id"] == "10000017"
Пример #15
0
    def test_search_bibNo_full_response_fields(self, live_key):
        with SolrSession(authorization=live_key.client_key,
                         endpoint=live_key.endpoint) as session:
            response = session.search_bibNo("b10000017a",
                                            default_response_fields=False)

            assert "Client-Key" in response.request.headers
            assert response.status_code == 200
            assert (
                response.url ==
                "https://www.bklynlibrary.org/solr/api/select/?rows=10&fq=ss_type%3Acatalog&q=id%3A10000017"
            )
            assert response.json()["response"]["numFound"] == 1
            assert response.json()["response"]["docs"][0]["id"] == "10000017"
Пример #16
0
    def test_search_isbns_empty(self, live_key):
        with SolrSession(authorization=live_key.client_key,
                         endpoint=live_key.endpoint) as session:
            response = session.search_isbns(
                ["978081098491"])  # last chr from isbns is missing

            assert response.status_code == 200
            assert response.json() == {
                "response": {
                    "numFound": 0,
                    "start": 0,
                    "numFoundExact": True,
                    "docs": [],
                }
            }
Пример #17
0
 def test_send_custom_request(self, live_key):
     with SolrSession(authorization=live_key.client_key,
                      endpoint=live_key.endpoint) as session:
         payload = {
             "q": "title:civil AND war",
             "fq": "ss_type:catalog",
             "fq": "material_type:Book",
             "rows": 2,
         }
         response = session._send_request(payload)
         assert "Client-Key" in response.request.headers
         assert response.status_code == 200
         assert (
             response.url ==
             "https://www.bklynlibrary.org/solr/api/select/?rows=2&fq=material_type%3ABook&q=title%3Acivil+AND+war"
         )
Пример #18
0
    def test_search_bibNo_for_nonexistent_bib(self, live_key):
        with SolrSession(authorization=live_key.client_key,
                         endpoint=live_key.endpoint) as session:
            response = session.search_bibNo("b10000001a",
                                            default_response_fields=False,
                                            response_fields="id,title")

            assert "Client-Key" in response.request.headers
            assert response.status_code == 200
            assert (
                response.url ==
                "https://www.bklynlibrary.org/solr/api/select/?rows=10&fq=ss_type%3Acatalog&q=id%3A10000001&fl=id%2Ctitle"
            )
            assert response.json() == {
                "response": {
                    "numFound": 0,
                    "start": 0,
                    "numFoundExact": True,
                    "docs": [],
                }
            }
Пример #19
0
 def test_authorization_in_header(self):
     session = SolrSession("my_client_key", "example.com")
     assert session.headers["Client-Key"] == "my_client_key"
Пример #20
0
 def test_init_agent_argument_exceptions(self, arg):
     err_msg = "Invalid type of an agent argument."
     with pytest.raises(BookopsSolrError) as exc:
         SolrSession("my_client_key", "example.com", agent=arg)
     assert err_msg in str(exc.value)
Пример #21
0
 def test_init_endpoint_param(self):
     session = SolrSession("my_client_key", "example.com")
     assert session.endpoint == "example.com"
Пример #22
0
 def test_search_isbns_unexpected_error(self, mock_unexpected_error):
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError):
             session.search_isbns(["9781680502404"])
Пример #23
0
 def test_search_reserveId_success(self,
                                   mock_successful_session_get_response):
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         response = session.search_reserveId("some_string")
         assert response.status_code == 200
Пример #24
0
 def test_init_argument_endpoint_exceptions(self, arg):
     err_msg = "Invalid endpoint argument. It must be a Client-Key string."
     with pytest.raises(BookopsSolrError) as exc:
         SolrSession(authorization="my_client_key", endpoint=arg)
     assert err_msg in str(exc.value)
Пример #25
0
 def test_init_agent_custom_param(self):
     session = SolrSession("my_client_key",
                           "example.com",
                           agent="my_client")
     assert session.agent == "my_client"
Пример #26
0
 def test_init_agent_default_param(self, arg):
     session = SolrSession("my_client_key", "example.com", agent=arg)
     assert session.agent == f"{__title__}/{__version__}"
Пример #27
0
 def test_search_reserveId_unexpected_error(self, mock_unexpected_error):
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError):
             session.search_reserveId("some_string")
Пример #28
0
 def test_determine_response_fields(self, arg_def, arg_field, expectation):
     session = SolrSession("my_client_key", "example.com")
     assert (session._determine_response_fields(
         default_response_fields=arg_def,
         response_fields=arg_field) == expectation)
     session.close()
Пример #29
0
 def test_find_expired_econtent_unexpected_error(self,
                                                 mock_unexpected_error):
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         with pytest.raises(BookopsSolrError):
             session.find_expired_econtent()
Пример #30
0
 def test_find_expired_econtent_success(
         self, mock_successful_session_get_response):
     with SolrSession(authorization="my_client_key",
                      endpoint="example.com") as session:
         response = session.find_expired_econtent()
         assert response.status_code == 200