from pelican.tests.support import unittest from pelican.urlwrappers import Author, Category, Tag, URLWrapper class TestURLWrapper(unittest.TestCase): def test_ordering(self): # URLWrappers are sorted by name wrapper_a = URLWrapper(name='first', settings={}) wrapper_b = URLWrapper(name='last', settings={}) self.assertFalse(wrapper_a > wrapper_b) self.assertFalse(wrapper_a >= wrapper_b) self.assertFalse(wrapper_a == wrapper_b) self.assertTrue(wrapper_a != wrapper_b) self.assertTrue(wrapper_a <= wrapper_b) self.assertTrue(wrapper_a < wrapper_b) wrapper_b.name = 'first' self.assertFalse(wrapper_a > wrapper_b) self.assertTrue(wrapper_a >= wrapper_b) self.assertTrue(wrapper_a == wrapper_b) self.assertFalse(wrapper_a != wrapper_b) self.assertTrue(wrapper_a <= wrapper_b) self.assertFalse(wrapper_a < wrapper_b) wrapper_a.name = 'last' self.assertTrue(wrapper_a > wrapper_b) self.assertTrue(wrapper_a >= wrapper_b) self.assertFalse(wrapper_a == wrapper_b) self.assertTrue(wrapper_a != wrapper_b) self.assertFalse(wrapper_a <= wrapper_b) self.assertFalse(wrapper_a < wrapper_b) def test_equality(self): tag = Tag('test', settings={}) cat = Category('test', settings={}) author = Author('test', settings={}) # same name, but different class self.assertNotEqual(tag, cat) self.assertNotEqual(tag, author) # should be equal vs text representing the same name self.assertEqual(tag, 'test') # should not be equal vs binary self.assertNotEqual(tag, b'test') # Tags describing the same should be equal tag_equal = Tag('Test', settings={}) self.assertEqual(tag, tag_equal) # Author describing the same should be equal author_equal = Author('Test', settings={}) self.assertEqual(author, author_equal) cat_ascii = Category('指導書', settings={}) self.assertEqual(cat_ascii, 'zhi dao shu') def test_slugify_with_substitutions_and_dots(self): tag = Tag('Tag Dot', settings={'TAG_REGEX_SUBSTITUTIONS': [ ('Tag Dot', 'tag.dot'), ]}) cat = Category('Category Dot', settings={'CATEGORY_REGEX_SUBSTITUTIONS': [ ('Category Dot', 'cat.dot'), ]}) self.assertEqual(tag.slug, 'tag.dot') self.assertEqual(cat.slug, 'cat.dot') def test_author_slug_substitutions(self): settings = {'AUTHOR_REGEX_SUBSTITUTIONS': [ ('Alexander Todorov', 'atodorov'), ('Krasimir Tsonev', 'krasimir'), (r'[^\w\s-]', ''), (r'(?u)\A\s*', ''), (r'(?u)\s*\Z', ''), (r'[-\s]+', '-'), ]} author1 = Author('Mr. Senko', settings=settings) author2 = Author('Alexander Todorov', settings=settings) author3 = Author('Krasimir Tsonev', settings=settings) self.assertEqual(author1.slug, 'mr-senko') self.assertEqual(author2.slug, 'atodorov') self.assertEqual(author3.slug, 'krasimir')