Code

issue2550729: Fix password history display for anydbm backend, thanks to
[roundup.git] / test / test_templating.py
index 80bae0efded1cb673c1ef865946d6e8accf8709c..a4c531b9257b07edc2a13332a9782c83cab17d1d 100644 (file)
@@ -72,6 +72,22 @@ class FunctionsTestCase(TemplatingTestCase):
 
 class HTMLClassTestCase(TemplatingTestCase) :
 
+    def test_link(self):
+        """Make sure lookup of a Link property works even in the
+        presence of multiple values in the form."""
+        def lookup(key) :
+            self.assertEqual(key, key.strip())
+            return "Status%s"%key
+        self.form.list.append(MiniFieldStorage("status", "1"))
+        self.form.list.append(MiniFieldStorage("status", "2"))
+        status = hyperdb.Link("status")
+        self.client.db.classes = dict \
+            ( issue = MockNull(getprops = lambda : dict(status = status))
+            , status  = MockNull(get = lambda id, name : id, lookup = lookup)
+            )
+        cls = HTMLClass(self.client, "issue")
+        cls["status"]
+
     def test_multilink(self):
         """`lookup` of an item will fail if leading or trailing whitespace
            has not been stripped.
@@ -130,10 +146,33 @@ class HTMLClassTestCase(TemplatingTestCase) :
     def test_url_replace(self):
         p = StringHTMLProperty(self.client, 'test', '1', None, 'test', '')
         def t(s): return p.hyper_re.sub(p._hyper_repl, s)
-        ae = self.assertEquals
-        ae(t('http://roundup.net/'), '<a href="http://roundup.net/">http://roundup.net/</a>')
-        ae(t('&lt;HTTP://roundup.net/&gt;'), '&lt;<a href="HTTP://roundup.net/">HTTP://roundup.net/</a>&gt;')
-        ae(t('&lt;www.roundup.net&gt;'), '&lt;<a href="http://www.roundup.net">www.roundup.net</a>&gt;')
+        ae = self.assertEqual
+        ae(t('item123123123123'), 'item123123123123')
+        ae(t('http://roundup.net/'),
+           '<a href="http://roundup.net/">http://roundup.net/</a>')
+        ae(t('&lt;HTTP://roundup.net/&gt;'),
+           '&lt;<a href="HTTP://roundup.net/">HTTP://roundup.net/</a>&gt;')
+        ae(t('&lt;http://roundup.net/&gt;.'),
+            '&lt;<a href="http://roundup.net/">http://roundup.net/</a>&gt;.')
+        ae(t('&lt;www.roundup.net&gt;'),
+           '&lt;<a href="http://www.roundup.net">www.roundup.net</a>&gt;')
+        ae(t('(www.roundup.net)'),
+           '(<a href="http://www.roundup.net">www.roundup.net</a>)')
+        ae(t('foo http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx bar'),
+           'foo <a href="http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx">'
+           'http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx</a> bar')
+        ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language))'),
+           '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)">'
+           'http://en.wikipedia.org/wiki/Python_(programming_language)</a>)')
+        ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language)).'),
+           '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)">'
+           'http://en.wikipedia.org/wiki/Python_(programming_language)</a>).')
+        ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language))&gt;.'),
+           '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)">'
+           'http://en.wikipedia.org/wiki/Python_(programming_language)</a>)&gt;.')
+        ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language&gt;)).'),
+           '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language">'
+           'http://en.wikipedia.org/wiki/Python_(programming_language</a>&gt;)).')
 
 '''
 class HTMLPermissions: