]> git.scottworley.com Git - paperdoorknob/blobdiff - glowfic_test.py
Optionally have Thread.__init__ fetch the HTML
[paperdoorknob] / glowfic_test.py
index 9b802c180cf3463e659f892948b0c9a64d4f936e..64da1649b1209b2bb5b37f914e6f40f65aae89b7 100644 (file)
@@ -10,40 +10,41 @@ import unittest
 from bs4 import BeautifulSoup
 
 from images import FakeImageStore
 from bs4 import BeautifulSoup
 
 from images import FakeImageStore
-from glowfic import chunkDOMs, makeChunk
+from glowfic import makeChunk, Thread
+from texify import PandocTexifier
 
 
 class TestSplit(unittest.TestCase):
 
     def testSplit1(self) -> None:
 
 
 class TestSplit(unittest.TestCase):
 
     def testSplit1(self) -> None:
-        soup = BeautifulSoup(b'''
+        t = Thread(BeautifulSoup(b'''
             <html><body><div class="post-container post-post">
               The "post"
             <html><body><div class="post-container post-post">
               The "post"
-            </div></body></html>''', 'html.parser')
-        self.assertEqual([list(t.stripped_strings) for t in chunkDOMs(soup)],
+            </div></body></html>''', 'html.parser'))
+        self.assertEqual([list(t.stripped_strings) for t in t.chunkDOMs()],
                          [['The "post"']])
 
     def testSplit2(self) -> None:
                          [['The "post"']])
 
     def testSplit2(self) -> None:
-        soup = BeautifulSoup(b'''
+        t = Thread(BeautifulSoup(b'''
             <html><body>
               <div class="post-container post-post">The "post"</div>
               <div class="flat-post-replies">
                 <div class="post-container post-reply">The "reply"</div>
               </div>
             <html><body>
               <div class="post-container post-post">The "post"</div>
               <div class="flat-post-replies">
                 <div class="post-container post-reply">The "reply"</div>
               </div>
-            </body></html>''', 'html.parser')
-        self.assertEqual([list(t.stripped_strings) for t in chunkDOMs(soup)],
+            </body></html>''', 'html.parser'))
+        self.assertEqual([list(t.stripped_strings) for t in t.chunkDOMs()],
                          [['The "post"'], ['The "reply"']])
 
     def testSplit3(self) -> None:
                          [['The "post"'], ['The "reply"']])
 
     def testSplit3(self) -> None:
-        soup = BeautifulSoup(b'''
+        t = Thread(BeautifulSoup(b'''
             <html><body>
               <div class="post-container post-post">The "post"</div>
               <div class="flat-post-replies">
                 <div class="post-container post-reply">1st reply</div>
                 <div class="post-container post-reply">2nd reply</div>
               </div>
             <html><body>
               <div class="post-container post-post">The "post"</div>
               <div class="flat-post-replies">
                 <div class="post-container post-reply">1st reply</div>
                 <div class="post-container post-reply">2nd reply</div>
               </div>
-            </body></html>''', 'html.parser')
-        self.assertEqual([list(t.stripped_strings) for t in chunkDOMs(soup)],
+            </body></html>''', 'html.parser'))
+        self.assertEqual([list(t.stripped_strings) for t in t.chunkDOMs()],
                          [['The "post"'], ['1st reply'], ['2nd reply']])
 
 
                          [['The "post"'], ['1st reply'], ['2nd reply']])
 
 
@@ -51,8 +52,8 @@ class TestMakeChunk(unittest.TestCase):
 
     def testEmptyContent(self) -> None:
         with open('testdata/empty-content.html', 'rb') as f:
 
     def testEmptyContent(self) -> None:
         with open('testdata/empty-content.html', 'rb') as f:
-            soup = BeautifulSoup(f, 'html.parser')
-        c = makeChunk(next(iter(chunkDOMs(soup))), FakeImageStore())
+            t = Thread(BeautifulSoup(f, 'html.parser'))
+        c = makeChunk(next(iter(t.chunkDOMs())), FakeImageStore())
         self.assertEqual(
             c.icon,
             'stored:https://d1anwqy6ci9o1i.cloudfront.net/' +
         self.assertEqual(
             c.icon,
             'stored:https://d1anwqy6ci9o1i.cloudfront.net/' +
@@ -67,6 +68,24 @@ class TestMakeChunk(unittest.TestCase):
         self.assertEqual(str(c.content),
                          '<div class="post-content"><p></p></div>')
 
         self.assertEqual(str(c.content),
                          '<div class="post-content"><p></p></div>')
 
+        self.assertEqual(
+            PandocTexifier("pandoc").texify(c.character), b'{Keltham}\n')
+
+
+class TestThread(unittest.TestCase):
+
+    def testTitle(self) -> None:
+        t = Thread(BeautifulSoup(b'''
+            <html><body>
+              <div class="content-header">
+                <span id="post-title">
+                  <a href="/posts/1234">Teh Story!</a>
+                </span>
+              </div>
+              <div class="post-container post-post">The "post"</div>
+            </body></html>''', 'html.parser'))
+        self.assertEqual(t.title(), 'Teh Story!')
+
 
 if __name__ == '__main__':
     unittest.main()
 
 if __name__ == '__main__':
     unittest.main()