# -*- coding: utf-8 -*- from util import WebHelpersTestCase import unittest from string24 import Template from webhelpers.rails.text import * class TestTextHelper(WebHelpersTestCase): def test_simple_format(self): self.assertEqual("
", simple_format(None)) self.assertEqual("crazy\n
cross\n
platform linebreaks
A paragraph
\n\nand another one!
", simple_format("A paragraph\n\nand another one!")) self.assertEqual("A paragraph\n
With a newline
Link %(link_result)s
" % result_values, auto_link("Link %(link_raw)s
" % raw_values)) self.assertEqual("%(link_result)s Link
" % result_values, auto_link("%(link_raw)s Link
" % raw_values)) self.assertEqual("Link %(link_result_with_options)s
" % result_values, auto_link("Link %(link_raw)s
" % raw_values, 'all', target='_blank')) self.assertEqual("Go to %(link_result)s." % result_values, auto_link("Go to %(link_raw)s." % raw_values)) self.assertEqual("Go to %(link_result)s, then say hello to %(email_result)s.
" % result_values, auto_link("Go to %(link_raw)s, then say hello to %(email_raw)s.
" % raw_values)) self.assertEqual("Go to %(link2_result)s" % result_values, auto_link("Go to %(link2_raw)s" % raw_values, 'urls')) self.assertEqual("Go to %(link2_raw)s" % raw_values, auto_link("Go to %(link2_raw)s" % raw_values, 'email_addresses')) self.assertEqual("Link %(link2_result)s
" % result_values, auto_link("Link %(link2_raw)s
" % raw_values)) self.assertEqual("%(link2_result)s Link
" % result_values, auto_link("%(link2_raw)s Link
" % raw_values)) self.assertEqual("Go to %(link2_result)s." % result_values, auto_link("Go to %(link2_raw)s." % raw_values)) self.assertEqual("Say hello to %(email_result)s, then go to %(link2_result)s.
" % result_values, auto_link("Say hello to %(email_raw)s, then go to %(link2_raw)s.
" % raw_values)) self.assertEqual("Go to %(link3_result)s" % result_values, auto_link("Go to %(link3_raw)s" % raw_values, 'urls')) self.assertEqual("Go to %(link3_raw)s" % raw_values, auto_link("Go to %(link3_raw)s" % raw_values, 'email_addresses')) self.assertEqual("Link %(link3_result)s
" % result_values, auto_link("Link %(link3_raw)s
" % raw_values)) self.assertEqual("%(link3_result)s Link
" % result_values, auto_link("%(link3_raw)s Link
" % raw_values)) self.assertEqual("Go to %(link3_result)s." % result_values, auto_link("Go to %(link3_raw)s." % raw_values)) self.assertEqual("Go to %(link3_result)s. seriously, %(link3_result)s? i think I'll say hello to %(email_result)s. instead.
" % result_values, auto_link("Go to %(link3_raw)s. seriously, %(link3_raw)s? i think I'll say hello to %(email_raw)s. instead.
" % raw_values)) self.assertEqual("Link %(link4_result)s
" % result_values, auto_link("Link %(link4_raw)s
" % raw_values)) self.assertEqual("%(link4_result)s Link
" % result_values, auto_link("%(link4_raw)s Link
" % raw_values)) self.assertEqual("%(link5_result)s Link
" % result_values, auto_link("%(link5_raw)s Link
" % raw_values)) self.assertEqual("%(link6_result)s Link
" % result_values, auto_link("%(link6_raw)s Link
" % raw_values)) self.assertEqual("%(link7_result)s Link
" % result_values, auto_link("%(link7_raw)s Link
" % raw_values)) self.assertEqual("Go to %(link8_result)s" % result_values, auto_link("Go to %(link8_raw)s" % raw_values, 'urls')) self.assertEqual("Go to %(link8_raw)s" % raw_values, auto_link("Go to %(link8_raw)s" % raw_values, 'email_addresses')) self.assertEqual("Link %(link8_result)s
" % result_values, auto_link("Link %(link8_raw)s
" % raw_values)) self.assertEqual("%(link8_result)s Link
" % result_values, auto_link("%(link8_raw)s Link
" % raw_values)) self.assertEqual("Go to %(link8_result)s." % result_values, auto_link("Go to %(link8_raw)s." % raw_values)) self.assertEqual("Go to %(link8_result)s. seriously, %(link8_result)s? i think I'll say hello to %(email_result)s. instead.
" % result_values, auto_link("Go to %(link8_raw)s. seriously, %(link8_raw)s? i think I'll say hello to %(email_raw)s. instead.
" % raw_values)) self.assertEqual("Go to %(link9_result)s" % result_values, auto_link("Go to %(link9_raw)s" % raw_values, 'urls')) self.assertEqual("Go to %(link9_raw)s" % raw_values, auto_link("Go to %(link9_raw)s" % raw_values, 'email_addresses')) self.assertEqual("Link %(link9_result)s
" % result_values, auto_link("Link %(link9_raw)s
" % raw_values)) self.assertEqual("%(link9_result)s Link
" % result_values, auto_link("%(link9_raw)s Link
" % raw_values)) self.assertEqual("Go to %(link9_result)s." % result_values, auto_link("Go to %(link9_raw)s." % raw_values)) self.assertEqual("Go to %(link9_result)s. seriously, %(link9_result)s? i think I'll say hello to %(email_result)s. instead.
" % result_values, auto_link("Go to %(link9_raw)s. seriously, %(link9_raw)s? i think I'll say hello to %(email_raw)s. instead.
" % raw_values)) self.assertEqual("", auto_link(None)) self.assertEqual("", auto_link("")) def test_cycle(self): self.assertEqual("one", cycle("one", "2", "3")) self.assertEqual("2", cycle("one", "2", "3")) self.assertEqual("3", cycle("one", "2", "3")) self.assertEqual("one", cycle("one", "2", "3")) self.assertEqual("2", cycle("one", "2", "3")) self.assertEqual("3", cycle("one", "2", "3")) self.assertEqual("3", cycle("3", "2", "one", name='ordered')) self.assertEqual("2", cycle("3", "2", "one", name='ordered')) self.assertEqual("one", cycle("3", "2", "one", name='ordered')) self.assertEqual("2", cycle("2", "3", "one", name='ordered')) self.assertEqual("3", cycle("2", "3", "one", name='ordered')) self.assertEqual("one", cycle("2", "3", "one", name='ordered')) def test_named_cycles(self): self.assertEqual(1, cycle(1, 2, 3, name="numbers")) self.assertEqual("red", cycle("red", "blue", name="colors")) self.assertEqual(2, cycle(1, 2, 3, name="numbers")) self.assertEqual("blue", cycle("red", "blue", name="colors")) self.assertEqual(3, cycle(1, 2, 3, name="numbers")) self.assertEqual("red", cycle("red", "blue", name="colors")) def test_default_named_cycle(self): self.assertEqual(1, cycle(1, 2, 3)) self.assertEqual(2, cycle(1, 2, 3, name="default")) self.assertEqual(3, cycle(1, 2, 3)) def test_reset_cycle(self): self.assertEqual(1, cycle(1, 2, 3)) self.assertEqual(2, cycle(1, 2, 3)) reset_cycle() self.assertEqual(1, cycle(1, 2, 3)) def test_reset_unknown_cycle(self): reset_cycle("colors") def test_recet_named_cycle(self): self.assertEqual(1, cycle(1, 2, 3, name="numbers")) self.assertEqual("red", cycle("red", "blue", name="colors")) reset_cycle("numbers") self.assertEqual(1, cycle(1, 2, 3, name="numbers")) self.assertEqual("blue", cycle("red", "blue", name="colors")) self.assertEqual(2, cycle(1, 2, 3, name="numbers")) self.assertEqual("red", cycle("red", "blue", name="colors")) def test_counters(self): for i in range(1, 4): self.assertEqual(i, counter()) reset_counter() for i in range(3): self.assertEqual(i, counter(start=0)) reset_counter() for i in range(2, 5): self.assertEqual(i, counter(start=2)) reset_counter() for i in range(1, -2, -1): self.assertEqual(i, counter(step=-1)) def test_named_counters(self): for i in range(1, 4): self.assertEqual(i, counter(name="a")) for i in range(1, 4): self.assertEqual(i, counter(name="b")) for i in range(4, 7): self.assertEqual(i, counter(name="a")) def test_excerpt(self): self.assertEqual("...lo my wo...", excerpt("hello my world", "my", 3)) self.assertEqual("...is a beautiful morn...", excerpt("This is a beautiful morning", "beautiful", 5)) self.assertEqual("This is a...", excerpt("This is a beautiful morning", "this", 5)) self.assertEqual("...iful morning", excerpt("This is a beautiful morning", "morning", 5)) self.assertEqual('', excerpt("This is a beautiful morning", "day")) def test_excerpt_with_regex(self): self.assertEqual('...is a beautiful! mor...', excerpt('This is a beautiful! morning', 'beautiful', 5)) self.assertEqual('...is a beautiful? mor...', excerpt('This is a beautiful? morning', 'beautiful', 5)) def test_excerpt_with_utf8(self): self.assertEqual(u"...fficiency could not be ...", excerpt(u"That's why efficiency could not be helped", 'could', 8)) def test_highlighter(self): self.assertEqual("This is a beautiful morning", highlight("This is a beautiful morning", "beautiful")) self.assertEqual( "This is a beautiful morning, but also a beautiful day", highlight("This is a beautiful morning, but also a beautiful day", "beautiful")) self.assertEqual("This is a beautiful morning, but also a beautiful day", highlight("This is a beautiful morning, but also a beautiful day", "beautiful", r'\1')) self.assertEqual("This text is not changed because we supplied an empty phrase", highlight("This text is not changed because we supplied an empty phrase", None)) def test_highlighter_with_regex(self): self.assertEqual("This is a beautiful! morning", highlight("This is a beautiful! morning", "beautiful!")) self.assertEqual("This is a beautiful! morning", highlight("This is a beautiful! morning", "beautiful! morning")) self.assertEqual("This is a beautiful? morning", highlight("This is a beautiful? morning", "beautiful? morning")) def test_strip_links(self): self.assertEqual("on my mind", strip_links("on my mind")) self.assertEqual("on my mind", strip_links("on my mind")) self.assertEqual("on my mind\nall day long", strip_links("on my mind\nall day long")) def test_truncate(self): self.assertEqual("Hello World!", truncate("Hello World!", 12)) self.assertEqual("Hello Wor...", truncate("Hello World!!", 12)) def test_textilize(self): self.assertEqual('Paragraph
\n\nAnother paragraph
\n\nMarkdown is a text-to-HTML conversion tool for web writers.\n
\n\n[Michel Fortin][] has ported to Markdown to PHP.\n
\n\n\n', markdown(markdown_text)) if __name__ == '__main__': suite = [unittest.makeSuite(TestTextHelper)] for testsuite in suite: unittest.TextTestRunner(verbosity=1).run(testsuite)