# paperdoorknob: Print glowfic
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation, version 3.
import unittest
from bs4 import BeautifulSoup
from images import FakeImageStore
from glowfic import chunkDOMs, makeChunk
class TestSplit(unittest.TestCase):
def testSplit1(self) -> None:
soup = BeautifulSoup(b'''
The "post"
''', 'html.parser')
self.assertEqual([list(t.stripped_strings) for t in chunkDOMs(soup)],
[['The "post"']])
def testSplit2(self) -> None:
soup = BeautifulSoup(b'''
The "post"
''', 'html.parser')
self.assertEqual([list(t.stripped_strings) for t in chunkDOMs(soup)],
[['The "post"'], ['The "reply"']])
def testSplit3(self) -> None:
soup = BeautifulSoup(b'''
The "post"
''', 'html.parser')
self.assertEqual([list(t.stripped_strings) for t in chunkDOMs(soup)],
[['The "post"'], ['1st reply'], ['2nd reply']])
class TestMakeChunk(unittest.TestCase):
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())
self.assertEqual(
c.icon,
'stored:https://d1anwqy6ci9o1i.cloudfront.net/' +
'users%2F366%2Ficons%2Fxqmypqvflgdy28aorw9ml_shock.png')
assert c.character
assert c.screen_name
assert c.author
self.assertEqual(list(c.character.stripped_strings), ['Keltham'])
self.assertEqual(
list(c.screen_name.stripped_strings), ['lawful chaotic'])
self.assertEqual(list(c.author.stripped_strings), ['Iarwain'])
self.assertEqual(str(c.content),
'')
if __name__ == '__main__':
unittest.main()