+class BaseTestProcess(ABC):
+
+ @abstractmethod
+ def url(self) -> str:
+ raise NotImplementedError()
+
+ @abstractmethod
+ def fetcher(self) -> Fetcher:
+ raise NotImplementedError()
+
+ def testReplies(self) -> None:
+ replies = list(paperdoorknob.replies(
+ paperdoorknob.parse(self.fetcher().fetch(self.url()))))
+ for r in replies:
+ ApplyDOMFilters('NoEdit,NoFooter', r)
+ assert [r.text.strip() for r in replies] == [
+ "This is glowfic",
+ "You sure?",
+ "Pretty sure."]
+
+ def testProcess(self) -> None:
+ buf = io.BytesIO()
+ spec = Spec(
+ self.url(),
+ self.fetcher(),
+ lambda x: x,
+ lambda x: ApplyDOMFilters('NoEdit,NoFooter', x),
+ PandocTexifier('pandoc'),
+ 'margin=20mm',
+ buf)
+ paperdoorknob.process(spec)
+ assert buf.getvalue() == b'''\\documentclass{article}
+\\usepackage[margin=20mm]{geometry}
+\\begin{document}
+This is glowfic
+You \\emph{sure}?
+Pretty sure.
+\\end{document}
+'''