# coding=utf-8 from django.test import TestCase from django.test.utils import override_settings from oscar.core import utils def sluggish(value, allow_unicode=False): return value.upper() class TestSlugify(TestCase): def test_default_unicode_to_ascii(self): self.assertEqual('konig-der-straxdfe', utils.slugify('König der Straße')) self.assertEqual('not-fancy', utils.slugify('Not fancy')) self.assertEqual('u4e01u4e02-u4e03u4e04u4e05', utils.slugify('丁丂 七丄丅')) @override_settings(OSCAR_SLUG_ALLOW_UNICODE=True) def test_allow_unicode(self): self.assertEqual('könig-der-straße', utils.slugify('König der Straße')) self.assertEqual('丁丂-七丄丅', utils.slugify('丁丂 七丄丅')) self.assertEqual('not-fancy', utils.slugify('Not fancy')) @override_settings(OSCAR_SLUG_FUNCTION='tests.integration.core.test_utils.sluggish') def test_custom_slugifier(self): self.assertEqual('HAM AND EGGS', utils.slugify('Ham and eggs')) @override_settings(OSCAR_SLUG_MAP={'c++': 'cpp'}) def test_uses_custom_mappings(self): self.assertEqual('cpp', utils.slugify('c++')) @override_settings(OSCAR_SLUG_BLACKLIST=['the']) def test_uses_blacklist(self): self.assertEqual('bible', utils.slugify('The Bible')) @override_settings(OSCAR_SLUG_BLACKLIST=['the', 'bible']) def test_uses_blacklist_doesnt_reduce_to_nothing(self): self.assertEqual('bible', utils.slugify('The Bible'))