diff --git a/rhodecode/tests/test_libs.py b/rhodecode/tests/test_libs.py --- a/rhodecode/tests/test_libs.py +++ b/rhodecode/tests/test_libs.py @@ -23,9 +23,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . - - import unittest +import datetime +import hashlib +import mock from rhodecode.tests import * proto = 'http' @@ -116,3 +117,61 @@ class TestLibs(unittest.TestCase): 'marian.user', 'marco-polo', 'marco_polo' ], key=lambda k: k.lower()) self.assertEqual(s, extract_mentioned_users(sample)) + + def test_age(self): + import calendar + from rhodecode.lib.utils2 import age + n = datetime.datetime.now() + delt = lambda *args, **kwargs: datetime.timedelta(*args, **kwargs) + self.assertEqual(age(n), u'just now') + self.assertEqual(age(n - delt(seconds=1)), u'1 second ago') + self.assertEqual(age(n - delt(seconds=60 * 2)), u'2 minutes ago') + self.assertEqual(age(n - delt(hours=1)), u'1 hour ago') + self.assertEqual(age(n - delt(hours=24)), u'1 day ago') + self.assertEqual(age(n - delt(hours=24 * 5)), u'5 days ago') + self.assertEqual(age(n - delt(hours=24 * (calendar.mdays[n.month-1] + 2))), + u'1 month and 2 days ago') + self.assertEqual(age(n - delt(hours=24 * 400)), u'1 year and 1 month ago') + + def test_tag_exctrator(self): + sample = ( + "hello pta[tag] gog [[]] [[] sda ero[or]d [me =>>< sa]" + "[requires] [stale] [see<>=>] [see => http://url.com]" + "[requires => url] [lang => python] [just a tag]" + "[,d] [ => ULR ] [obsolete] [desc]]" + ) + from rhodecode.lib.helpers import desc_stylize + res = desc_stylize(sample) + self.assertTrue('
tag
' in res) + self.assertTrue('
obsolete
' in res) + self.assertTrue('
stale
' in res) + self.assertTrue('
python
' in res) + self.assertTrue('
requires => url
' in res) + self.assertTrue('
tag
' in res) + + def test_alternative_gravatar(self): + from rhodecode.lib.helpers import gravatar_url + _md5 = lambda s: hashlib.md5(s).hexdigest() + + def fake_conf(**kwargs): + from pylons import config + config['app_conf'] = {} + config['app_conf']['use_gravatar'] = True + config['app_conf'].update(kwargs) + return config + fake = fake_conf(alternative_gravatar_url='http://test.com/{email}') + with mock.patch('pylons.config', fake): + grav = gravatar_url(email_address='test@foo.com', size=24) + assert grav == 'http://test.com/test@foo.com' + + fake = fake_conf(alternative_gravatar_url='http://test.com/{md5email}') + with mock.patch('pylons.config', fake): + em = 'test@foo.com' + grav = gravatar_url(email_address=em, size=24) + assert grav == 'http://test.com/%s' % (_md5(em)) + + fake = fake_conf(alternative_gravatar_url='http://test.com/{md5email}/{size}') + with mock.patch('pylons.config', fake): + em = 'test@foo.com' + grav = gravatar_url(email_address=em, size=24) + assert grav == 'http://test.com/%s/%s' % (_md5(em), 24)