pino-source-code / tests /test_scraper.py
Matthew Ford
feat: add WiseMoor v9 provenance dataset
aa64aba
Raw
History Blame Contribute Delete
2.14 kB
from __future__ import annotations
from pino import scraper
def test_parse_tgsc_page_falls_back_when_camofox_has_no_data(monkeypatch) -> None:
camofox_result = {
"boiling_point_k": None,
"vapor_pressure_pa": None,
"odor_description": "",
"error": "blocked",
}
requests_result = {
"boiling_point_k": 449.65,
"vapor_pressure_pa": 205.45,
"odor_description": "terpene pine",
}
monkeypatch.setattr(scraper, "parse_tgsc_page_camofox", lambda url: camofox_result)
monkeypatch.setattr(
scraper,
"parse_tgsc_page_requests",
lambda url, timeout=30.0: requests_result.copy(),
)
result = scraper.parse_tgsc_page("https://example.test/material.html")
assert result == {
**requests_result,
"camofox_error": "blocked",
}
def test_parse_tgsc_page_returns_camofox_data_without_fallback(monkeypatch) -> None:
camofox_result = {
"boiling_point_k": 449.65,
"vapor_pressure_pa": 205.45,
"odor_description": "terpene pine",
}
monkeypatch.setattr(scraper, "parse_tgsc_page_camofox", lambda url: camofox_result)
def fail_requests(url, timeout=30.0):
raise AssertionError("requests fallback should not be called")
monkeypatch.setattr(scraper, "parse_tgsc_page_requests", fail_requests)
assert scraper.parse_tgsc_page("https://example.test/material.html") == camofox_result
def test_parse_tgsc_page_can_disable_fallback(monkeypatch) -> None:
camofox_result = {
"boiling_point_k": None,
"vapor_pressure_pa": None,
"odor_description": "",
"error": "blocked",
}
monkeypatch.setattr(scraper, "parse_tgsc_page_camofox", lambda url: camofox_result)
def fail_requests(url, timeout=30.0):
raise AssertionError("requests fallback should not be called")
monkeypatch.setattr(scraper, "parse_tgsc_page_requests", fail_requests)
assert (
scraper.parse_tgsc_page(
"https://example.test/material.html",
fallback_to_requests=False,
)
== camofox_result
)