X-Git-Url: http://git.scottworley.com/paperdoorknob/blobdiff_plain/940270992010ea5b4c912eb02f502923c0487a31..24b87badcef35a53477aec067ee61cc9dd97b2a5:/glowfic_test.py diff --git a/glowfic_test.py b/glowfic_test.py index ed32945..bd26e3c 100644 --- a/glowfic_test.py +++ b/glowfic_test.py @@ -5,45 +5,62 @@ # Free Software Foundation, version 3. +from sys import stderr import unittest -from bs4 import BeautifulSoup - +from fetch import FakeFetcher from images import FakeImageStore from glowfic import makeChunk, Thread +from spec import Spec from texify import PandocTexifier +def spec_for_testing(html: bytes) -> Spec: + return Spec('https://fake/test', + FakeFetcher({'https://fake/test': html, + 'https://fake/test?view=flat': html}), + FakeImageStore(), + lambda x: x, + lambda x: None, + PandocTexifier('pandoc'), + lambda x: x, + 20, + b'', + None, + stderr.buffer, + lambda x: None) + + class TestSplit(unittest.TestCase): def testSplit1(self) -> None: - t = Thread(BeautifulSoup(b''' + t = Thread(spec_for_testing(b'''
The "post" -
''', 'html.parser')) + ''')) self.assertEqual([list(t.stripped_strings) for t in t.chunkDOMs()], [['The "post"']]) def testSplit2(self) -> None: - t = Thread(BeautifulSoup(b''' + t = Thread(spec_for_testing(b'''
The "post"
The "reply"
- ''', 'html.parser')) + ''')) self.assertEqual([list(t.stripped_strings) for t in t.chunkDOMs()], [['The "post"'], ['The "reply"']]) def testSplit3(self) -> None: - t = Thread(BeautifulSoup(b''' + t = Thread(spec_for_testing(b'''
The "post"
1st reply
2nd reply
- ''', 'html.parser')) + ''')) self.assertEqual([list(t.stripped_strings) for t in t.chunkDOMs()], [['The "post"'], ['1st reply'], ['2nd reply']]) @@ -52,7 +69,7 @@ class TestMakeChunk(unittest.TestCase): def testEmptyContent(self) -> None: with open('testdata/empty-content.html', 'rb') as f: - t = Thread(BeautifulSoup(f, 'html.parser')) + t = Thread(spec_for_testing(f.read((9999)))) c = makeChunk(next(iter(t.chunkDOMs())), FakeImageStore()) self.assertEqual( c.icon, @@ -72,5 +89,44 @@ class TestMakeChunk(unittest.TestCase): PandocTexifier("pandoc").texify(c.character), b'{Keltham}\n') +class TestThread(unittest.TestCase): + + def testTitle(self) -> None: + t = Thread(spec_for_testing(b''' + +
+ + Teh Story! + +
+
The "post"
+ ''')) + self.assertEqual(t.title(), 'Teh Story!') + + def testNextThreadRelative(self) -> None: + t = Thread(spec_for_testing(b''' + +
+
Next Post »
+
« Previous Post
+
+
+
The "post"
+ ''')) + self.assertEqual(t.next_thread(), 'https://fake/posts/4567') + + def testNextThreadAbsolute(self) -> None: + t = Thread(spec_for_testing(b''' + +
+
Next Post »
+
« Previous Post
+
+
+
The "post"
+ ''')) + self.assertEqual(t.next_thread(), 'https://elsewhere/posts/4567') + + if __name__ == '__main__': unittest.main()