From b1f0c3b39a4978dfc4855665de9b509b38445ca5 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Sun, 26 Mar 2017 19:48:10 +0200 Subject: [PATCH] Increased coverage. see #1084 --- modoboa/core/extensions.py | 13 +++++++++---- modoboa/core/tests/stupid_extension_2/urls.py | 8 +++++++- modoboa/core/tests/test_extensions.py | 14 +++++++++++++- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/modoboa/core/extensions.py b/modoboa/core/extensions.py index b1a401317..a49764d5c 100644 --- a/modoboa/core/extensions.py +++ b/modoboa/core/extensions.py @@ -16,16 +16,22 @@ class ModoExtension(object): label = None version = "NA" description = "" - url = None needs_media = False always_active = False + url = None topredirection_url = None + def get_url(self): + """Return extension base url.""" + if self.url is None: + return self.name + return self.url + def infos(self): """Information about this extension.""" return { "name": self.name, "label": self.label, "version": self.version, - "description": self.description, "url": self.url, + "description": self.description, "url": self.get_url(), "topredirection_url": self.topredirection_url, "always_active": self.always_active } @@ -101,8 +107,7 @@ class ExtensionsPool(object): root = "" pattern = "{}.urls_api" else: - baseurl = getattr(ext, "url", ext_name) - root = r"^{}/".format(baseurl) + root = r"^{}/".format(ext.get_url()) options.update({"namespace": ext_name}) pattern = "{}.urls" try: diff --git a/modoboa/core/tests/stupid_extension_2/urls.py b/modoboa/core/tests/stupid_extension_2/urls.py index 552d09822..a7996a92b 100644 --- a/modoboa/core/tests/stupid_extension_2/urls.py +++ b/modoboa/core/tests/stupid_extension_2/urls.py @@ -1,3 +1,9 @@ """Custom urls.""" -urlpatterns = [] +from django.conf.urls import url + +from . import views + +urlpatterns = [ + url("^$", views.test_view, name="index") +] diff --git a/modoboa/core/tests/test_extensions.py b/modoboa/core/tests/test_extensions.py index aa3f57e6b..cd23f3151 100644 --- a/modoboa/core/tests/test_extensions.py +++ b/modoboa/core/tests/test_extensions.py @@ -6,6 +6,7 @@ import sys from testfixtures import compare from django.core import management +from django.core.urlresolvers import reverse from django.test import TestCase, override_settings from .. import extensions @@ -57,7 +58,7 @@ class ExtensionTestCase(TestCase): compare(infos, { "name": "stupid_extension_1", "label": "Stupid extension", "version": "1.0.0", "description": "A stupid extension", - "url": None, "always_active": False, + "url": "stupid_extension_1", "always_active": False, "topredirection_url": None }) @@ -72,3 +73,14 @@ class ExtensionTestCase(TestCase): """Check if method is called.""" with self.assertRaises(RuntimeError): management.call_command("load_initial_data") + + def test_get_urls(self): + """Load extensions urls.""" + urls = self.pool.get_urls() + self.assertEqual(len(urls), 1) + + url = reverse("stupid_extension_2:index") + self.assertEqual(url, "/stupid_extension_2/") + + urls = self.pool.get_urls(category="api") + self.assertEqual(len(urls), 0)