Switch to side-by-side view

--- a
+++ b/forgeblog/tests/unit/test_blog_post.py
@@ -0,0 +1,83 @@
+from datetime import datetime
+from nose.tools import assert_equal
+
+from forgeblog import model as M
+from forgeblog.tests.unit import BlogTestWithModel
+
+def wrapped(s):
+    return '<div class="markdown_content"><p>%s</p></div>' % s
+
+class TestHtmlPreview(BlogTestWithModel):
+    def _make_post(self, text):
+        post = M.BlogPost()
+        post.text = text
+        post.make_slug()
+        return post
+
+    def test_single_long_paragraph(self):
+        text = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
+                "sed do eiusmod tempor incididunt ut labore et dolore magna "
+                "aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
+                "ullamco laboris nisi ut aliquip ex ea commodo consequat. "
+                "Duis aute irure dolor in reprehenderit in voluptate velit "
+                "esse cillum dolore eu fugiat nulla pariatur. Excepteur sint "
+                "occaecat cupidatat non proident, sunt in culpa qui officia "
+                "deserunt mollit anim id est laborum.")
+        assert_equal(self._make_post(text).html_text_preview, wrapped(text))
+
+    def test_single_short_paragraph(self):
+        text = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
+                "sed do eiusmod tempor incididunt ut labore et dolore magna "
+                "aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
+                "ullamco laboris nisi ut aliquip ex ea commodo consequat.")
+        assert_equal(self._make_post(text).html_text_preview, wrapped(text))
+
+    def test_multi_paragraph_short(self):
+        text = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
+                "sed do eiusmod tempor incididunt ut labore et dolore magna "
+                "aliqua."
+                "\n\n"
+                "Ut enim ad minim veniam, quis nostrud exercitation "
+                "ullamco laboris nisi ut aliquip ex ea commodo consequat.")
+
+        expected = ('<div class="markdown_content"><p>Lorem ipsum dolor sit '
+                    'amet, consectetur adipisicing elit, sed do eiusmod '
+                    'tempor incididunt ut labore et dolore magna aliqua.</p>\n'
+                    '<p>Ut enim ad minim veniam, quis nostrud exercitation '
+                    'ullamco laboris nisi ut aliquip ex ea commodo '
+                    'consequat.</p></div>')
+        assert_equal(self._make_post(text).html_text_preview, expected)
+
+    def test_multi_paragraph_long(self):
+        text = ("Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
+                "sed do eiusmod tempor incididunt ut labore et dolore magna "
+                "aliqua."
+                "\n\n"
+                "Lorem ipsum dolor sit amet, consectetur adipisicing elit, "
+                "sed do eiusmod tempor incididunt ut labore et dolore magna "
+                "aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
+                "ullamco laboris nisi ut aliquip ex ea commodo consequat. "
+                "Duis aute irure dolor in reprehenderit in voluptate velit "
+                "esse cillum dolore eu fugiat nulla pariatur. Excepteur sint "
+                "occaecat cupidatat non proident, sunt in culpa qui officia "
+                "deserunt mollit anim id est laborum."
+                "\n\n"
+                "Ut enim ad minim veniam, quis nostrud exercitation "
+                "ullamco laboris nisi ut aliquip ex ea commodo consequat.")
+
+        now = datetime.utcnow()
+        expected = ('<div class="markdown_content"><p>Lorem ipsum dolor sit '
+                    'amet, consectetur adipisicing elit, sed do eiusmod '
+                    'tempor incididunt ut labore et dolore magna aliqua.</p>\n'
+                    '<p>Lorem ipsum dolor sit amet, consectetur adipisicing '
+                    'elit, sed do eiusmod tempor incididunt ut labore et '
+                    'dolore magna aliqua. Ut enim ad minim veniam, quis '
+                    'nostrud exercitation ullamco laboris nisi ut aliquip ex '
+                    'ea commodo consequat. Duis aute irure dolor in '
+                    'reprehenderit in voluptate velit esse cillum dolore eu '
+                    'fugiat nulla pariatur. Excepteur sint occaecat cupidatat '
+                    'non proident, sunt in culpa qui officia deserunt mollit '
+                    'anim id est laborum.... '
+                    '<a href="/p/test/blog/%s/%02i/untitled/">read more</a>'
+                    '</p></div>') % (now.year, now.month)
+        assert_equal(self._make_post(text).html_text_preview, expected)