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) 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) assert result[0]["page_number"] == 2 def test_json_has_blocks(self, basic_pdf): result = get_page_text(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") 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") assert isinstance(result, str) def test_text_contains_content(self, basic_pdf): result = get_page_text(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") 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") 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") assert isinstance(result, str) def test_markdown_contains_content(self, basic_pdf): result = get_page_text(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") 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") assert isinstance(result, str) def test_html_has_tags(self, basic_pdf): result = get_page_text(basic_pdf, start_page=1, format="html") assert "