mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
add some more tests for the utils module
This commit is contained in:
parent
c393b011c4
commit
32355f5463
2 changed files with 84 additions and 1 deletions
|
|
@ -1,8 +1,9 @@
|
|||
from contextlib import contextmanager
|
||||
|
||||
from tempfile import mkdtemp
|
||||
from shutil import rmtree
|
||||
|
||||
from pelican.contents import Article
|
||||
|
||||
|
||||
@contextmanager
|
||||
def temporary_folder():
|
||||
|
|
@ -16,3 +17,10 @@ def temporary_folder():
|
|||
tempdir = mkdtemp()
|
||||
yield 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
75
tests/test_utils.py
Normal 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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue