Browse Source

Merge branch 'dev' of github.com:coderedcorp/coderedcms into dev

Vince Salvino 4 years ago
parent
commit
9b89a6de0c
2 changed files with 31 additions and 1 deletions
  1. 2 1
      coderedcms/templatetags/coderedcms_tags.py
  2. 29 0
      coderedcms/tests/test_templatetags.py

+ 2 - 1
coderedcms/templatetags/coderedcms_tags.py

@@ -40,7 +40,8 @@ def coderedcms_version():
 
 @register.simple_tag
 def generate_random_id():
-    return ''.join(random.choice(string.ascii_letters + string.digits) for n in range(20))
+    value = ''.join(random.choice(string.ascii_letters + string.digits) for n in range(20))
+    return "cr-{}".format(value)
 
 
 @register.simple_tag(takes_context=True)

+ 29 - 0
coderedcms/tests/test_templatetags.py

@@ -0,0 +1,29 @@
+import re
+
+from django.template import engines
+from django.test import TestCase
+
+
+django_engine = engines['django']
+html_id_re = re.compile(r"^[A-Za-z][A-Za-z0-9_:\.-]*$")
+
+
+class TemplateTagTests(TestCase):
+    def test_coderedcms_generate_random_id(self):
+        count = 1000
+        t = django_engine.from_string(
+            "{% load coderedcms_tags %}{% generate_random_id as rid %}{{rid}}"
+        )
+        ids = set([])
+        for i in range(count):
+            ids.add(t.render())
+
+        # ensure we are reasonably unique
+        self.assertEqual(len(ids), count)
+
+        # ensure ids are valid
+        for i, value in enumerate(ids, start=1):
+            self.assertTrue(
+                html_id_re.match(value),
+                'ID #%s "%s" did not match regex %r' % (i, value, html_id_re),
+            )