retronews

a featureful fork of the luke8086/retronews hn+lobste.rs tui
Log | Files | Refs | README | LICENSE

commit 3b8dbb52dd4c6feacecfd100b6b86f0f1a3336de
parent e696cb71b8fa67cce9f8d9e1b02ca53199db6978
Author: luke8086 <55237178+luke8086@users.noreply.github.com>
Date:   Tue,  2 Aug 2022 21:43:06 +0000

Add tests for rendering paragraphs, quotes and code blocks

Diffstat:
Mtests.py | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 76 insertions(+), 2 deletions(-)

diff --git a/tests.py b/tests.py @@ -4,10 +4,84 @@ import retronews class TestHtmlParser(unittest.TestCase): + maxDiff = None + + def test_paragraphs(self): + html = ( + "<p>Lorem ipsum dolor sit amet, pro eu soleat civibus. " + + "Mel quas sensibus te. Noster nominati recteque no has.</p>" + + "<p>Lorem ipsum dolor sit amet, pro eu soleat civibus. " + + "Mel quas sensibus te. Noster nominati recteque no has.</p>" + ) + lines = [ + "Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus", + "te. Noster nominati recteque no has.", + "", + "Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus", + "te. Noster nominati recteque no has.", + ] + self.assertLines(html, lines) + + def test_quotes(self): + html = ( + "<p>&gt;&gt;Lorem ipsum dolor sit amet, pro eu soleat civibus. " + + "Mel quas sensibus te. Noster nominati recteque no has.</p>" + + "<p>&gt; Lorem ipsum dolor sit amet, pro eu soleat civibus. " + + "Mel quas sensibus te. Noster nominati recteque no has.</p>" + + "<p>Lorem ipsum dolor sit amet, pro eu soleat civibus. " + + "Mel quas sensibus te. Noster nominati recteque no has.</p>" + ) + lines = [ + ">>Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus", + ">>te. Noster nominati recteque no has.", + "", + "> Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus", + "> te. Noster nominati recteque no has.", + "", + "Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus", + "te. Noster nominati recteque no has.", + ] + self.assertLines(html, lines) + def test_expanding_links(self): html = '<a href="https://example.com/foo/bar">https://example.com/foo...</a>' - lines = retronews.parse_html(html) - self.assertListEqual(lines, ["https://example.com/foo/bar"]) + lines = ["https://example.com/foo/bar"] + self.assertLines(html, lines) + + def test_code_blocks(self): + # This HTML is not particularly correct, but it's how HN renders code blocks + html = ( + "<p>Lorem ipsum dolor sit amet, pro eu soleat civibus. " + + "Mel quas sensibus te. Noster nominati recteque no has.</p>" + + "<p><pre><code> def hello():\n print('Hello World')\n return None\n</code></pre>\n" + + "Lorem ipsum dolor sit amet, pro eu soleat civibus. " + + "Mel quas sensibus te. Noster nominati recteque no has.</p>" + + "<p><pre><code> def hello():\n print('Hello World')\n return None\n</code></pre>\n" + + "Lorem ipsum dolor sit amet, pro eu soleat civibus. " + + "Mel quas sensibus te. Noster nominati recteque no has.</p>" + ) + lines = [ + "Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus", + "te. Noster nominati recteque no has.", + "", + " def hello():", + " print('Hello World')", + " return None", + "", + "Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus", + "te. Noster nominati recteque no has.", + "", + " def hello():", + " print('Hello World')", + " return None", + "", + "Lorem ipsum dolor sit amet, pro eu soleat civibus. Mel quas sensibus", + "te. Noster nominati recteque no has.", + ] + self.assertLines(html, lines) + + def assertLines(self, html: str, lines: list[str]) -> None: + self.assertListEqual(retronews.parse_html(html), lines) if __name__ == "__main__":