|
| 1 | +import unittest |
| 2 | +from django.core.exceptions import ValidationError |
1 | 3 | from django.test import TestCase
|
| 4 | +from .models import CustomTag |
2 | 5 |
|
3 |
| -# Create your tests here. |
| 6 | + |
| 7 | +class CustomTagTests(TestCase): |
| 8 | + def test_valid_slugs(self): |
| 9 | + test_tags = [ |
| 10 | + {"name": "programming", "expected_slug": "programming"}, |
| 11 | + {"name": "PyCon", "expected_slug": "pycon"}, |
| 12 | + {"name": "local storage", "expected_slug": "local-storage"}, |
| 13 | + {"name": "PEN testing", "expected_slug": "pen-testing"}, |
| 14 | + {"name": "תִּיכְנוּת", "expected_slug": "תיכנות"}, |
| 15 | + {"name": " 프로그램 작성", "expected_slug": "프로그램-작성"}, |
| 16 | + {"name": "程式设计", "expected_slug": "程式设计"}, |
| 17 | + {"name": "برمجة", "expected_slug": "برمجة"}, |
| 18 | + {"name": "आनंद", "expected_slug": "आनद"}, |
| 19 | + {"name": "лягушачий", "expected_slug": "лягушачий"}, |
| 20 | + {"name": "教程", "expected_slug": "教程"}, |
| 21 | + {"name": "Inicio r\u00e1pido", "expected_slug": "inicio-r\u00e1pido"}, |
| 22 | + {"name": "最后", "expected_slug": "最后"}, |
| 23 | + {"name": " 欲求不満", "expected_slug": "欲求不満"}, |
| 24 | + {"name": "စမ်းသပ်ခြင်း", "expected_slug": "စမသပခင"}, |
| 25 | + {"name": "ฐานข้อมูล", "expected_slug": "ฐานขอมล"}, |
| 26 | + {"name": "основы", "expected_slug": "основы"}, |
| 27 | + {"name": "אַלגערידאַם", "expected_slug": "אלגערידאם"}, |
| 28 | + {"name": "自動化する", "expected_slug": "自動化する"}, |
| 29 | + {"name": "sjálfvirkan", "expected_slug": "sjálfvirkan"}, |
| 30 | + {"name": "پژوهش ", "expected_slug": "پژوهش"}, |
| 31 | + {"name": " గ్రాఫ్", "expected_slug": "గరఫ"}, |
| 32 | + {"name": "데이터 베이스", "expected_slug": "데이터-베이스"}, |
| 33 | + {"name": "stòran-dàta", "expected_slug": "stòran-dàta"}, |
| 34 | + ] |
| 35 | + |
| 36 | + for entry in test_tags: |
| 37 | + tag = CustomTag(name=entry["name"]) |
| 38 | + tag.save() |
| 39 | + self.assertEqual(tag.slug, entry["expected_slug"]) |
| 40 | + |
| 41 | + @unittest.skip('https://github.com/codebuddies/backend/issues/123') |
| 42 | + def test_brahmic_abugida_slugs(self): |
| 43 | + test_tags = [ |
| 44 | + {"name": "हिंदी में जानकारी", "expected_slug": "TODO"}, |
| 45 | + {"name": "प्रयास है", "expected_slug": "TODO"}, |
| 46 | + {"name": "స్వయంచాలక", "expected_slug": "TODO"}, |
| 47 | + ] |
| 48 | + |
| 49 | + for entry in test_tags: |
| 50 | + tag = CustomTag(name=entry["name"]) |
| 51 | + tag.save() |
| 52 | + self.assertEqual(tag.slug, entry["expected_slug"]) |
| 53 | + |
| 54 | + def test_invalid_slugs(self): |
| 55 | + invalid_tag_names = [ |
| 56 | + "❤🐸", |
| 57 | + "🐸", |
| 58 | + " %", |
| 59 | + "//", |
| 60 | + ] |
| 61 | + for name in invalid_tag_names: |
| 62 | + with self.assertRaises(ValidationError): |
| 63 | + tag = CustomTag(name=name) |
| 64 | + tag.save() |
| 65 | + |
| 66 | + def test_duplicates(self): |
| 67 | + tag1 = CustomTag(name='javascript') |
| 68 | + tag1.save() |
| 69 | + |
| 70 | + # fail if we try to generate more tags with the same slug |
| 71 | + with self.assertRaises(ValidationError): |
| 72 | + tag2 = CustomTag(name='Javascript') |
| 73 | + tag2.save() |
| 74 | + |
| 75 | + with self.assertRaises(ValidationError): |
| 76 | + tag3 = CustomTag(name='JaVascripT%/') |
| 77 | + tag3.save() |
0 commit comments