auto trim TOC, rewrite test to use actual MPC calls
This commit is contained in:
1 parent
6156a76a91
commit
aaa9b83949
8 files changed
+488
-171
No files matched your search
+43
-47
@@ -1,120 +1,116 @@
|
||||
from pdf_mcp.server import get_page_text
|
||||
|
||||
|
||||
class TestGetPageTextJson:
|
||||
def test_default_format_is_json(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1)
|
||||
def test_default_format_is_json(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1)
|
||||
assert isinstance(result, list)
|
||||
assert len(result) == 1
|
||||
assert isinstance(result[0], dict)
|
||||
|
||||
def test_json_has_page_number(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=2)
|
||||
def test_json_has_page_number(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=2)
|
||||
assert result[0]["page_number"] == 2
|
||||
|
||||
def test_json_has_blocks(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1)
|
||||
def test_json_has_blocks(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1)
|
||||
assert "blocks" in result[0]
|
||||
assert len(result[0]["blocks"]) > 0
|
||||
|
||||
def test_json_page_range(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, end_page=3, format="json")
|
||||
def test_json_page_range(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, end_page=3, format="json")
|
||||
assert len(result) == 3
|
||||
assert result[0]["page_number"] == 1
|
||||
assert result[2]["page_number"] == 3
|
||||
|
||||
|
||||
class TestGetPageTextPlain:
|
||||
def test_text_format_returns_string(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="text")
|
||||
def test_text_format_returns_string(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="text")
|
||||
assert isinstance(result, str)
|
||||
|
||||
def test_text_contains_content(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="text")
|
||||
def test_text_contains_content(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="text")
|
||||
assert "Chapter 1" in result
|
||||
assert "introductory material" in result
|
||||
|
||||
def test_text_page_range_has_breaks(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, end_page=2, format="text")
|
||||
def test_text_page_range_has_breaks(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, end_page=2, format="text")
|
||||
assert "--- Page Break ---" in result
|
||||
assert "Chapter 1" in result
|
||||
assert "Chapter 2" in result
|
||||
|
||||
def test_text_single_page_no_break(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="text")
|
||||
def test_text_single_page_no_break(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="text")
|
||||
assert "--- Page Break ---" not in result
|
||||
|
||||
|
||||
class TestGetPageTextMarkdown:
|
||||
def test_markdown_returns_string(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="markdown")
|
||||
def test_markdown_returns_string(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="markdown")
|
||||
assert isinstance(result, str)
|
||||
|
||||
def test_markdown_contains_content(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="markdown")
|
||||
def test_markdown_contains_content(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="markdown")
|
||||
assert "Chapter 1" in result
|
||||
|
||||
def test_markdown_page_range(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, end_page=3, format="markdown")
|
||||
def test_markdown_page_range(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, end_page=3, format="markdown")
|
||||
assert "Chapter 1" in result
|
||||
assert "Chapter 3" in result
|
||||
|
||||
|
||||
class TestGetPageTextHtml:
|
||||
def test_html_returns_string(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="html")
|
||||
def test_html_returns_string(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="html")
|
||||
assert isinstance(result, str)
|
||||
|
||||
def test_html_has_tags(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="html")
|
||||
def test_html_has_tags(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="html")
|
||||
assert "<div" in result
|
||||
assert "<span" in result
|
||||
|
||||
def test_html_contains_content(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="html")
|
||||
def test_html_contains_content(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="html")
|
||||
assert "Chapter 1" in result
|
||||
|
||||
|
||||
class TestGetPageTextHeaderFooter:
|
||||
def test_with_headers_footers(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=1, format="text", include_headers_footers=True)
|
||||
def test_with_headers_footers(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=1, format="text", include_headers_footers=True)
|
||||
assert "Header" in result
|
||||
assert "Page 1 of 3" in result
|
||||
|
||||
def test_without_headers_footers(self, basic_pdf):
|
||||
result = get_page_text(
|
||||
basic_pdf, start_page=1, format="text", include_headers_footers=False
|
||||
def test_without_headers_footers(self, basic_pdf, call_tool):
|
||||
result = call_tool(
|
||||
"get_page_text", filename=basic_pdf, start_page=1, format="text", include_headers_footers=False
|
||||
)
|
||||
# Header text is at y=30, footer at y=820 — both within the 50pt margin crop
|
||||
assert "Header" not in result
|
||||
assert "Page 1 of 3" not in result
|
||||
|
||||
def test_body_preserved_without_headers_footers(self, basic_pdf):
|
||||
result = get_page_text(
|
||||
basic_pdf, start_page=1, format="text", include_headers_footers=False
|
||||
def test_body_preserved_without_headers_footers(self, basic_pdf, call_tool):
|
||||
result = call_tool(
|
||||
"get_page_text", filename=basic_pdf, start_page=1, format="text", include_headers_footers=False
|
||||
)
|
||||
assert "Chapter 1" in result
|
||||
assert "introductory material" in result
|
||||
|
||||
def test_markdown_without_headers_footers(self, basic_pdf):
|
||||
result = get_page_text(
|
||||
basic_pdf, start_page=1, format="markdown", include_headers_footers=False
|
||||
def test_markdown_without_headers_footers(self, basic_pdf, call_tool):
|
||||
result = call_tool(
|
||||
"get_page_text", filename=basic_pdf, start_page=1, format="markdown", include_headers_footers=False
|
||||
)
|
||||
assert "Chapter 1" in result
|
||||
assert "Header" not in result
|
||||
|
||||
|
||||
class TestGetPageTextEndPageDefault:
|
||||
def test_end_page_defaults_to_start(self, basic_pdf):
|
||||
result = get_page_text(basic_pdf, start_page=2, format="text")
|
||||
def test_end_page_defaults_to_start(self, basic_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=basic_pdf, start_page=2, format="text")
|
||||
assert "Chapter 2" in result
|
||||
assert "Chapter 1" not in result
|
||||
assert "Chapter 3" not in result
|
||||
|
||||
|
||||
class TestGetPageTextDiagrams:
|
||||
def test_diagrams_text_extraction(self, diagrams_pdf):
|
||||
result = get_page_text(diagrams_pdf, start_page=1, format="text")
|
||||
def test_diagrams_text_extraction(self, diagrams_pdf, call_tool):
|
||||
result = call_tool("get_page_text", filename=diagrams_pdf, start_page=1, format="text")
|
||||
assert "Component A" in result
|
||||
assert "Component B" in result
|
||||
assert "Pin Configuration" in result
|
||||
|
||||
Reference in new issue
Block a user