diff --git a/pelican/tests/test_contents.py b/pelican/tests/test_contents.py new file mode 100644 index 00000000..10d3741a --- /dev/null +++ b/pelican/tests/test_contents.py @@ -0,0 +1,54 @@ +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', metadatas=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', metadatas={'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')) diff --git a/pelican/tests/test_settings.py b/pelican/tests/test_settings.py new file mode 100644 index 00000000..58e38378 --- /dev/null +++ b/pelican/tests/test_settings.py @@ -0,0 +1,16 @@ +from unittest2 import TestCase + +from pelican.settings import read_settings, DEFAULT_CONFIG + +class SettingsTest(TestCase): + + def test_read_settings(self): + # providing no file should return the default values + settings = read_settings(None) + self.assertDictEqual(settings, DEFAULT_CONFIG) + + # providing a file should read it, replace the default values and append + # new values to the settings, if any + settings = read_settings(mock) + self.assertIn('key', settings) + self.assertEqual(settings['KEY'