Browse Source

test db engine check

Rafał Pitoń 8 years ago
parent
commit
b2ac149820
3 changed files with 66 additions and 24 deletions
  1. 12 5
      misago/core/__init__.py
  2. 34 0
      misago/core/tests/test_checks.py
  3. 20 19
      misago/core/tests/test_utils.py

+ 12 - 5
misago/core/__init__.py

@@ -2,17 +2,24 @@ from django.conf import settings
 from django.core.checks import register, Critical
 
 
+SUPPORTED_ENGINES = (
+    'django.db.backends.postgresql',
+    'django.db.backends.postgresql_psycopg2',
+)
+
+
 @register()
-def db_check(app_configs, **kwargs):
+def check_db_engine(app_configs, **kwargs):
     errors = []
 
     try:
-        supported_driver = 'django.db.backends.postgresql_psycopg2'
-        if settings.DATABASES['default']['ENGINE'] != supported_driver:
+        if settings.DATABASES['default']['ENGINE'] not in SUPPORTED_ENGINES:
             raise ValueError()
     except (AttributeError, KeyError, ValueError):
-        errors.append(Critical(msg='Misago requires PostgreSQL database.',
-                               id='misago.001'))
+        errors.append(Critical(
+            msg='Misago requires PostgreSQL database.',
+            id='misago.001'
+        ))
 
     return errors
 

+ 34 - 0
misago/core/tests/test_checks.py

@@ -0,0 +1,34 @@
+import warnings
+
+from django.test import TestCase
+
+from .. import SUPPORTED_ENGINES, check_db_engine
+
+
+INVALID_ENGINES = (
+    'django.db.backends.sqlite3',
+    'django.db.backends.mysql',
+    'django.db.backends.oracle',
+)
+
+
+class TestCheckDBEngine(TestCase):
+    def test_valid_engines(self):
+        """check passes valid engines"""
+        with warnings.catch_warnings():
+            warnings.simplefilter("ignore")
+
+            for engine in SUPPORTED_ENGINES:
+                with self.settings(DATABASES={'default': {'ENGINE': engine}}):
+                    errors = check_db_engine(None)
+                    self.assertEqual(errors, [])
+
+    def test_invalid_engines(self):
+        """check returns error for invalid engines"""
+        with warnings.catch_warnings():
+            warnings.simplefilter("ignore")
+
+            for engine in INVALID_ENGINES:
+                with self.settings(DATABASES={'default': {'ENGINE': engine}}):
+                    errors = check_db_engine(None)
+                    self.assertTrue(errors)

+ 20 - 19
misago/core/tests/test_utils.py

@@ -1,4 +1,5 @@
 #-*- coding: utf-8 -*-
+from __future__ import unicode_literals
 from django.test import TestCase
 from django.test.client import RequestFactory
 from django.urls import reverse
@@ -51,13 +52,13 @@ class SlugifyTests(TestCase):
     def test_valid_slugify_output(self):
         """Misago's slugify correctly slugifies string"""
         test_cases = (
-            (u'Bob', u'bob'),
-            (u'Eric The Fish', u'eric-the-fish'),
-            (u'John   Snow', u'john-snow'),
-            (u'J0n', u'j0n'),
-            (u'An###ne', u'anne'),
-            (u'S**t', u'st'),
-            (u'Łók', u'lok'),
+            ('Bob', 'bob'),
+            ('Eric The Fish', 'eric-the-fish'),
+            ('John   Snow', 'john-snow'),
+            ('J0n', 'j0n'),
+            ('An###ne', 'anne'),
+            ('S**t', 'st'),
+            ('Łók', 'lok'),
         )
 
         for original, slug in test_cases:
@@ -93,28 +94,28 @@ class ParseIso8601StringTests(TestCase):
 
 PLAINTEXT_FORMAT_CASES = (
     (
-        u'Lorem ipsum.',
-        u'<p>Lorem ipsum.</p>'
+        'Lorem ipsum.',
+        '<p>Lorem ipsum.</p>'
     ),
     (
-        u'Lorem <b>ipsum</b>.',
-        u'<p>Lorem &lt;b&gt;ipsum&lt;/b&gt;.</p>'
+        'Lorem <b>ipsum</b>.',
+        '<p>Lorem &lt;b&gt;ipsum&lt;/b&gt;.</p>'
     ),
     (
-        u'Lorem "ipsum" dolor met.',
-        u'<p>Lorem &quot;ipsum&quot; dolor met.</p>'
+        'Lorem "ipsum" dolor met.',
+        '<p>Lorem &quot;ipsum&quot; dolor met.</p>'
     ),
     (
-        u'Lorem ipsum.\nDolor met.',
-        u'<p>Lorem ipsum.<br />Dolor met.</p>'
+        'Lorem ipsum.\nDolor met.',
+        '<p>Lorem ipsum.<br />Dolor met.</p>'
     ),
     (
-        u'Lorem ipsum.\n\nDolor met.',
-        u'<p>Lorem ipsum.</p>\n\n<p>Dolor met.</p>'
+        'Lorem ipsum.\n\nDolor met.',
+        '<p>Lorem ipsum.</p>\n\n<p>Dolor met.</p>'
     ),
     (
-        u'http://misago-project.org/login/',
-        u'<p><a href="http://misago-project.org/login/">http://misago-project.org/login/</a></p>'
+        'http://misago-project.org/login/',
+        '<p><a href="http://misago-project.org/login/">http://misago-project.org/login/</a></p>'
     ),
 )