1
0
Fork 0
forked from github/pelican
pelican-theme/tests/test_contents.py
2011-07-02 14:41:39 -05:00

52 lines
2 KiB
Python

from unittest2 import TestCase
from pelican.contents import Page
from pelican.settings import _DEFAULT_CONFIG
class TestPage(TestCase):
def test_use_args(self):
# creating a page with arguments passed to the connstructor should use
# them to initialise object's attributes
metadata = {'foo': 'bar', 'foobar': 'baz'}
page = Page('content', metadata=metadata)
for key, value in metadata.items():
self.assertTrue(hasattr(page, key))
self.assertEqual(value, getattr(page, key))
self.assertEqual(page.content, "content")
def test_mandatory_properties(self):
# if the title is not set, must throw an exception
page = Page('content')
with self.assertRaises(NameError) as cm:
page.check_properties()
page = Page('content', metadata={'title': 'foobar'})
page.check_properties()
def test_slug(self):
# if a title is given, it should be used to generate the slug
page = Page('content', {'title': 'foobar is foo'})
self.assertEqual(page.slug, 'foobar-is-foo')
def test_defaultlang(self):
# if no lang is given, default to the default one
page = Page('content')
self.assertEqual(page.lang, _DEFAULT_CONFIG['DEFAULT_LANG'])
# it is possible to specify the lang in the metadata infos
page = Page('content', {'lang': 'fr'})
self.assertEqual(page.lang, 'fr')
def test_save_as(self):
# if a lang is not the default lang, save_as should be set accordingly
page = Page('content', {'title': 'foobar', 'lang': 'fr'}) #default lang is en
self.assertEqual(page.save_as, "foobar-fr.html")
# otherwise, if a title is defined, save_as should be set
page = Page('content', {'title': 'foobar'})
page.save_as = 'foobar.html'
# if no title is given, there is no save_as
page = Page('content')
self.assertFalse(hasattr(page, 'save_as'))