Tom Aarsen 5eb1466acc
Resolve various style issues to improve overall code quality (#282)
* Apply import sorting

ruff . --select I --fix

* Remove unnecessary open mode parameter

ruff . --select UP015 --fix

* Use f-string formatting rather than .format

* Remove extraneous parentheses

Also use "" instead of str()

* Resolve missing trailing commas

ruff . --select COM --fix

* Rewrite list() and dict() calls using literals

ruff . --select C4 --fix

* Add () to pytest.fixture, use tuples for parametrize, etc.

ruff . --select PT --fix

* Simplify code: merge conditionals, context managers

ruff . --select SIM --fix

* Import without unnecessary alias

ruff . --select PLR0402 --fix

* Apply formatting via black

* Rewrite ValueError somewhat

Slightly unrelated to the rest of the PR

* Apply formatting to tests via black

* Update expected exception message to match
0d81564

* Satisfy E501 line too long in test

* Update changelog & version

* Add ruff to make tidy and test deps

* Run 'make tidy'

* Update changelog & version

* Update changelog & version

* Add ruff to 'check' target

Doing so required me to also fix some non-auto-fixable issues. Two of them I fixed with a noqa: SIM115, but especially the one in __init__ may need some attention. That said, that refactor is out of scope of this PR.
2023-02-27 11:30:54 -05:00

41 lines
1.5 KiB
Python

import pytest
from unstructured.documents.base import Document, Page
from unstructured.documents.elements import NarrativeText, Title
class MockDocument(Document):
def __init__(self):
super().__init__()
elements = [
Title(text="This is a narrative."),
NarrativeText(text="This is a narrative."),
NarrativeText(text="This is a narrative."),
]
page = Page(number=0)
page.elements = elements
self._pages = [page]
def test_get_narrative():
document = MockDocument()
narrative = document.get_narrative()
for element in narrative:
assert isinstance(element, NarrativeText)
document.print_narrative()
@pytest.mark.parametrize("index", [0, 1, 2])
def test_split(index):
document = MockDocument()
elements = document.pages[0].elements
split_before_doc = document.before_element(elements[index])
before_elements = split_before_doc.pages[0].elements if split_before_doc.pages else []
split_after_doc = document.after_element(elements[index])
after_elements = split_after_doc.pages[0].elements if split_after_doc.pages else []
expected_before_elements = document.pages[0].elements[:index]
next_index = index + 1
expected_after_elements = document.pages[0].elements[next_index:]
assert all(a.id == b.id for a, b in zip(before_elements, expected_before_elements))
assert all(a.id == b.id for a, b in zip(after_elements, expected_after_elements))