This commit is contained in:
@@ -4,10 +4,9 @@ import sys
|
||||
import unittest
|
||||
import pytest
|
||||
|
||||
from unittest import mock
|
||||
|
||||
from ..config import DJANGO_SETTINGS_DIR
|
||||
from ..program import Program
|
||||
from ..utils import get_root_urlconf
|
||||
|
||||
|
||||
class MainTestCase(unittest.TestCase):
|
||||
@@ -83,41 +82,38 @@ class MainTestCase(unittest.TestCase):
|
||||
argv = ['-a', 'django_deploy', '-a', 'django_deploy.tests.fake_app', project_dir]
|
||||
self._program(argv=argv)
|
||||
|
||||
if 'django.contrib.admin' in sys.modules:
|
||||
original_admin = sys.modules['django.contrib.admin']
|
||||
root_urlconf = get_root_urlconf(project_dir)
|
||||
|
||||
if hasattr(root_urlconf, 'path'):
|
||||
expected_urlpatterns = [
|
||||
('URLPattern', 'admin/', 'django.contrib.admin.site.urls'),
|
||||
]
|
||||
else:
|
||||
original_admin = None
|
||||
mock_admin = mock.Mock()
|
||||
sys.modules['django.contrib.admin'] = mock_admin
|
||||
|
||||
from django.urls import path
|
||||
|
||||
expected_urlpatterns = [
|
||||
('URLPattern', 'admin/', mock_admin.site.urls),
|
||||
('URLResolver', 'fake/'),
|
||||
expected_urlpatterns = [
|
||||
('URLPattern', '^admin/', 'django.contrib.admin.site.urls'),
|
||||
]
|
||||
expected_urlpatterns += [
|
||||
('URLResolver', '^fake/', 'django_deploy.tests.fake_app.urls'),
|
||||
]
|
||||
|
||||
settings_dir = os.path.join(project_dir, DJANGO_SETTINGS_DIR)
|
||||
sys.path.insert(0, settings_dir)
|
||||
root_urlconf = importlib.import_module('urls')
|
||||
if sys.version_info.major == 2: # pragma: no cover
|
||||
reload(root_urlconf) # pylint: disable=undefined-variable
|
||||
else: # pragma: no cover
|
||||
importlib.reload(root_urlconf) # pylint: disable=no-member
|
||||
sys.path.pop(0)
|
||||
|
||||
if original_admin:
|
||||
sys.modules['django.contrib.admin'] = original_admin
|
||||
|
||||
real_urlpatterns = root_urlconf.urlpatterns
|
||||
self.assertEqual(len(expected_urlpatterns), len(real_urlpatterns))
|
||||
|
||||
for i in range(0, len(expected_urlpatterns)):
|
||||
expected = expected_urlpatterns[i]
|
||||
for i, expected in enumerate(expected_urlpatterns):
|
||||
real = real_urlpatterns[i]
|
||||
self.assertEqual(expected[0], real.__class__.__name__)
|
||||
if expected[0] == 'URLPattern':
|
||||
self.assertIsNotNone(real.pattern.match(expected[1]))
|
||||
self.assertEqual(expected[2], real.callback)
|
||||
real_class_name = real.__class__.__name__
|
||||
self.assertTrue(real_class_name.endswith(expected[0]))
|
||||
if real_class_name == 'URLPattern':
|
||||
self.assertEqual(expected[1], str(real.pattern))
|
||||
self.assertTrue(real.callback.startswith("<Mock name='{}' id=".format(expected[2])))
|
||||
elif real_class_name == 'RegexURLPattern':
|
||||
self.assertEqual(expected[1], real.regex.pattern)
|
||||
self.assertTrue(real.callback.startswith("<Mock name='{}' id=".format(expected[2])))
|
||||
elif real_class_name == 'URLResolver':
|
||||
self.assertEqual(expected[1], str(real.pattern))
|
||||
self.assertEqual(expected[2], real.urlconf_name.__name__)
|
||||
elif real_class_name == 'RegexURLResolver':
|
||||
self.assertEqual(expected[1], real.regex.pattern)
|
||||
self.assertEqual(expected[2], real.urlconf_name.__name__)
|
||||
else:
|
||||
raise Exception(dir(real))
|
||||
self.fail('Unknown urlpattern class: {}'.format(real_class_name))
|
||||
|
||||
Reference in New Issue
Block a user