add some more tests for the utils module

This commit is contained in:
Alexis Metaireau 2012-03-11 15:51:48 +01:00
commit 32355f5463
2 changed files with 84 additions and 1 deletions

View file

@ -1,8 +1,9 @@
from contextlib import contextmanager from contextlib import contextmanager
from tempfile import mkdtemp from tempfile import mkdtemp
from shutil import rmtree from shutil import rmtree
from pelican.contents import Article
@contextmanager @contextmanager
def temporary_folder(): def temporary_folder():
@ -16,3 +17,10 @@ def temporary_folder():
tempdir = mkdtemp() tempdir = mkdtemp()
yield tempdir yield tempdir
rmtree(tempdir) rmtree(tempdir)
def get_article(title, slug, content, lang, extra_metadata=None):
metadata = {'slug': slug, 'title': title, 'lang': lang}
if extra_metadata is not None:
metadata.update(extra_metadata)
return Article(content, metadata=metadata)

75
tests/test_utils.py Normal file
View file

@ -0,0 +1,75 @@
# -*- coding: utf-8 -*-
try:
import unittest2 as unittest
except ImportError:
import unittest # NOQA
import datetime
from pelican import utils
from pelican.contents import Article
from support import get_article
class TestUtils(unittest.TestCase):
def test_get_date(self):
# valid ones
date = datetime.datetime(year=2012, month=11, day=22)
date_hour = datetime.datetime(year=2012, month=11, day=22, hour=22,
minute=11)
date_hour_sec = datetime.datetime(year=2012, month=11, day=22, hour=22,
minute=11, second=10)
dates = {'2012-11-22': date,
'2012/11/22': date,
'2012-11-22 22:11': date_hour,
'2012/11/22 22:11': date_hour,
'22-11-2012': date,
'22/11/2012': date,
'22.11.2012': date,
'2012-22-11': date,
'22.11.2012 22:11': date_hour,
'2012-11-22 22:11:10': date_hour_sec}
for value, expected in dates.items():
self.assertEquals(utils.get_date(value), expected, value)
# invalid ones
invalid_dates = ('2010-110-12', 'yay')
for item in invalid_dates:
self.assertRaises(ValueError, utils.get_date, item)
def test_slugify(self):
samples = (('this is a test', 'this-is-a-test'),
('this is a test', 'this-is-a-test'),
(u'this → is ← a ↑ test', 'this-is-a-test'),
('this--is---a test', 'this-is-a-test'))
for value, expected in samples:
self.assertEquals(utils.slugify(value), expected)
def test_get_relative_path(self):
samples = (('/test/test', '../../.'),
('/test/test/', '../../../.'),
('/', '../.'))
for value, expected in samples:
self.assertEquals(utils.get_relative_path(value), expected)
def test_process_translations(self):
# create a bunch of articles
fr_article1 = get_article(lang='fr', slug='yay', title='Un titre',
content='en français')
en_article1 = get_article(lang='en', slug='yay', title='A title',
content='in english')
articles = [fr_article1, en_article1]
index, trans = utils.process_translations(articles)
self.assertIn(en_article1, index)
self.assertIn(fr_article1, trans)
self.assertNotIn(en_article1, trans)
self.assertNotIn(fr_article1, index)