Browse Source

starting with misago views shortcuts

Rafał Pitoń 11 years ago
parent
commit
306152fd54
2 changed files with 48 additions and 0 deletions
  1. 6 0
      misago/views/shortcuts.py
  2. 42 0
      misago/views/tests/test_shortcuts.py

+ 6 - 0
misago/views/shortcuts.py

@@ -0,0 +1,6 @@
+from misago.views.exceptions import OutdatedSlug
+
+
+def check_object_slug(model, slug):
+    if model.slug != slug:
+        raise OutdatedSlug(model)

+ 42 - 0
misago/views/tests/test_shortcuts.py

@@ -0,0 +1,42 @@
+from django.test import TestCase
+from misago.views.shortcuts import check_object_slug, OutdatedSlug
+
+
+class MockModel(object):
+    def __init__(self, slug):
+        self.slug = slug
+
+
+class CheckObjectSlugTests(TestCase):
+    def test_is_outdated_slug_exception_not_raised_for_valid_slug(self):
+        """
+        check_object_slug doesn't raise OutdatedSlug when slugs match
+        """
+        model = MockModel("test-slug")
+
+        try:
+            check_object_slug(model, "test-slug")
+        except OutdatedSlug:
+            self.fail("check_object_slug raised OutdatedSlug for valid slugs")
+
+    def test_is_outdated_slug_exception_raised_for_invalid_slug(self):
+        """
+        check_object_slug raises OutdatedSlug when slugs mismatch
+        """
+        model = MockModel("test-slug")
+
+        with self.assertRaises(OutdatedSlug):
+            check_object_slug(model, "wrong-slug")
+
+    def test_is_outdated_slug_exception_raised_with_valid_message(self):
+        """
+        check_object_slug raises OutdatedSlug with valid message
+        """
+        correct_slug = "test-slug"
+        model = MockModel(correct_slug)
+
+        try:
+            check_object_slug(model, "wrong-slug")
+        except OutdatedSlug as e:
+            self.assertEqual(model, e.args[0])
+