a b/forgeblog/tests/unit/test_blog_post.py
1
from datetime import datetime
2
from nose.tools import assert_equal
3
4
from forgeblog import model as M
5
from forgeblog.tests.unit import BlogTestWithModel
6
7
def wrapped(s):
8
    return '<div class="markdown_content"><p>%s</p></div>' % s
9
10
class TestHtmlPreview(BlogTestWithModel):
11
    def _make_post(self, text):
12
        post = M.BlogPost()
13
        post.text = text
14
        post.make_slug()
15
        return post
16
17
    def test_single_long_paragraph(self):
18
        text = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
19
                "sed do eiusmod tempor incididunt ut labore et dolore magna "
20
                "aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
21
                "ullamco laboris nisi ut aliquip ex ea commodo consequat. "
22
                "Duis aute irure dolor in reprehenderit in voluptate velit "
23
                "esse cillum dolore eu fugiat nulla pariatur. Excepteur sint "
24
                "occaecat cupidatat non proident, sunt in culpa qui officia "
25
                "deserunt mollit anim id est laborum.")
26
        assert_equal(self._make_post(text).html_text_preview, wrapped(text))
27
28
    def test_single_short_paragraph(self):
29
        text = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
30
                "sed do eiusmod tempor incididunt ut labore et dolore magna "
31
                "aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
32
                "ullamco laboris nisi ut aliquip ex ea commodo consequat.")
33
        assert_equal(self._make_post(text).html_text_preview, wrapped(text))
34
35
    def test_multi_paragraph_short(self):
36
        text = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
37
                "sed do eiusmod tempor incididunt ut labore et dolore magna "
38
                "aliqua."
39
                "\n\n"
40
                "Ut enim ad minim veniam, quis nostrud exercitation "
41
                "ullamco laboris nisi ut aliquip ex ea commodo consequat.")
42
43
        expected = ('<div class="markdown_content"><p>Lorem ipsum dolor sit '
44
                    'amet, consectetur adipisicing elit, sed do eiusmod '
45
                    'tempor incididunt ut labore et dolore magna aliqua.</p>\n'
46
                    '<p>Ut enim ad minim veniam, quis nostrud exercitation '
47
                    'ullamco laboris nisi ut aliquip ex ea commodo '
48
                    'consequat.</p></div>')
49
        assert_equal(self._make_post(text).html_text_preview, expected)
50
51
    def test_multi_paragraph_long(self):
52
        text = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
53
                "sed do eiusmod tempor incididunt ut labore et dolore magna "
54
                "aliqua."
55
                "\n\n"
56
                "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
57
                "sed do eiusmod tempor incididunt ut labore et dolore magna "
58
                "aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
59
                "ullamco laboris nisi ut aliquip ex ea commodo consequat. "
60
                "Duis aute irure dolor in reprehenderit in voluptate velit "
61
                "esse cillum dolore eu fugiat nulla pariatur. Excepteur sint "
62
                "occaecat cupidatat non proident, sunt in culpa qui officia "
63
                "deserunt mollit anim id est laborum."
64
                "\n\n"
65
                "Ut enim ad minim veniam, quis nostrud exercitation "
66
                "ullamco laboris nisi ut aliquip ex ea commodo consequat.")
67
68
        now = datetime.utcnow()
69
        expected = ('<div class="markdown_content"><p>Lorem ipsum dolor sit '
70
                    'amet, consectetur adipisicing elit, sed do eiusmod '
71
                    'tempor incididunt ut labore et dolore magna aliqua.</p>\n'
72
                    '<p>Lorem ipsum dolor sit amet, consectetur adipisicing '
73
                    'elit, sed do eiusmod tempor incididunt ut labore et '
74
                    'dolore magna aliqua. Ut enim ad minim veniam, quis '
75
                    'nostrud exercitation ullamco laboris nisi ut aliquip ex '
76
                    'ea commodo consequat. Duis aute irure dolor in '
77
                    'reprehenderit in voluptate velit esse cillum dolore eu '
78
                    'fugiat nulla pariatur. Excepteur sint occaecat cupidatat '
79
                    'non proident, sunt in culpa qui officia deserunt mollit '
80
                    'anim id est laborum.... '
81
                    '<a href="/p/test/blog/%s/%02i/untitled/">read more</a>'
82
                    '</p></div>') % (now.year, now.month)
83
        assert_equal(self._make_post(text).html_text_preview, expected)