Source code for fobi.tests.test_core

import datetime

from django.test import RequestFactory, TestCase
from django.urls import reverse
from django.utils import timezone

from fobi.base import (
    get_registered_form_callbacks,
    get_registered_form_element_plugins,
    get_registered_form_handler_plugins,
    get_registered_themes,
)
from fobi.forms import FormEntryForm
from fobi.models import FormEntry, FormWizardEntry

from .constants import TEST_FORM_NAME, TEST_FORM_SLUG
from .core import print_info
from .helpers import get_or_create_admin_user, setup_app

__title__ = "fobi.tests.test_core"
__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2014-2022 Artur Barseghyan"
__license__ = "GPL 2.0/LGPL 2.1"
__all__ = ("FobiCoreTest",)


[docs]class FobiCoreTest(TestCase): """Tests of django-fobi core functionality."""
[docs] def setUp(self): """Set up.""" setup_app(fobi_sync_plugins=True)
@print_info def test_01_get_registered_form_element_plugins(self): """Test registered form element plugins. Calling the `get_registered_form_element_plugins`. """ res = get_registered_form_element_plugins() self.assertTrue(len(res) > 0) return res @print_info def test_02_get_registered_form_handler_plugins(self): """Test registered form handlers. Calling `get_registered_form_handler_plugins`. """ res = get_registered_form_handler_plugins() self.assertTrue(len(res) > 0) return res @print_info def test_03_get_registered_form_callbacks(self): """Test registered form callbacks. Calling `get_registered_form_callbacks`. """ res = get_registered_form_callbacks() self.assertTrue(len(res) > 0) return res @print_info def test_04_get_registered_themes(self): """Test registered themes. Calling `get_registered_themes`. """ res = get_registered_themes() self.assertTrue(len(res) > 0) return res def _test_form_action_url(self, form_entry, action_url): """Test form action URL.""" request_factory = RequestFactory() request = request_factory.post( reverse("fobi.edit_form_entry", args=[form_entry.pk]), data={ "name": "John Doe", "is_public": False, "success_page_title": "", "success_page_message": "", "action": action_url, }, ) form = FormEntryForm(request.POST, request=request, instance=form_entry) saved = False try: if form.is_valid(): form.save() saved = True except Exception: pass return saved def _create_form_entry(self): """Create form entry.""" user = get_or_create_admin_user() self.assertTrue(user is not None) form_entry = FormEntry( name=TEST_FORM_NAME, slug=TEST_FORM_SLUG, user=user ) form_entry.save() return form_entry def _create_form_wizard_entry(self): """Create form wizard entry.""" user = get_or_create_admin_user() self.assertTrue(user is not None) form_wizard_entry = FormWizardEntry( name=TEST_FORM_NAME, slug=TEST_FORM_SLUG, user=user ) form_wizard_entry.save() return form_wizard_entry @print_info def test_05_action_url(self): """Test `action` field of the URL.""" form_entry = self._create_form_entry() # Local URL, OK test saved = self._test_form_action_url( form_entry, reverse("fobi.edit_form_entry", args=[27]) ) self.assertTrue(saved) # Local URL, fail test saved = self._test_form_action_url(form_entry, "/en/idontexist/") self.assertTrue(not saved) # External URL, OK test saved = self._test_form_action_url( form_entry, "http://delusionalinsanity.com/portfolio/" ) self.assertTrue(saved) # External URL, fail test saved = self._test_form_action_url( form_entry, "http://delusionalinsanity.com2/portfolio/" ) self.assertTrue(not saved) # External URL, fail test saved = self._test_form_action_url( form_entry, "http://delusionalinsanity2.com/portfolio/" ) self.assertTrue(not saved) @print_info def test_06_form_entry_get_absolute_url(self): """Test ``get_absolute_url`` of the form entry.""" form_entry = self._create_form_entry() absolute_url = form_entry.get_absolute_url() self.assertTrue( absolute_url, "/en/fobi/view/{}/".format(TEST_FORM_SLUG) ) @print_info def test_07_form_wizard_entry_get_absolute_url(self): """Test ``get_absolute_url`` of the form wizard entry.""" form_wizard_entry = self._create_form_wizard_entry() absolute_url = form_wizard_entry.get_absolute_url() self.assertTrue( absolute_url, "/en/fobi/wizard-view/{}/".format(TEST_FORM_SLUG) ) @print_info def test_08_form_entry_is_active(self): """Test ``is_active`` of the form entry.""" form_entry = self._create_form_entry() self.assertTrue(form_entry.is_active) now = timezone.now() tomorrow = now + datetime.timedelta(days=1) yesterday = now - datetime.timedelta(days=1) form_entry.active_date_from = now form_entry.active_date_to = None self.assertTrue(form_entry.is_active) form_entry.active_date_from = yesterday form_entry.active_date_to = tomorrow self.assertTrue(form_entry.is_active) form_entry.active_date_from = tomorrow form_entry.active_date_to = yesterday self.assertFalse(form_entry.is_active) form_entry.active_date_from = None form_entry.active_date_to = now self.assertFalse(form_entry.is_active)