# under the terms of the GNU General Public License as published by the
# Free Software Foundation, version 3.
-
+from io import BytesIO
from sys import stderr
import unittest
+from typing import Optional
+
from fetch import FakeFetcher
from images import FakeImageStore
from glowfic import makeChunk, Thread
from texify import PandocTexifier
-def spec_for_testing(html: bytes) -> Spec:
+def spec_for_testing(html: bytes, outbuf: Optional[BytesIO] = None) -> Spec:
return Spec('https://fake/test',
FakeFetcher({'https://fake/test': html,
'https://fake/test?view=flat': html}),
20,
b'',
None,
- stderr.buffer,
+ stderr.buffer if outbuf is None else outbuf,
lambda x: None)
self.assertEqual(t.next_thread(), 'https://elsewhere/posts/4567')
+class TestEmit(unittest.TestCase):
+
+ def testEmit(self) -> None:
+ buf = BytesIO()
+ Thread(spec_for_testing(b'''
+ <html><body>
+ <div class="post-container post-post">
+ <div class="post-content">A</div>
+ </div>
+ <div class="flat-post-replies">
+ <div class="post-container post-reply">
+ <div class="post-content">B</div>
+ </div>
+ </div>
+ </body></html>''', buf)).emit()
+ self.assertEqual(buf.getvalue(), rb'''\glowhead{}{}{}{}A
+\glowhead{}{}{}{}B
+''')
+
+
if __name__ == '__main__':
unittest.main()