33from django .contrib .auth .models import User
44from django .core .exceptions import ImproperlyConfigured , ValidationError
55from django .test import Client , TestCase
6- from django .test .utils import override_settings
6+ from django .test .utils import isolate_apps , override_settings
77from django .urls import set_urlconf
88from django .utils .translation import deactivate_all , override
99from feincms3 .applications import NoReverseMatch , _del_apps_urlconf_cache , apps_urlconf
1515 set_sites ,
1616 site_for_host ,
1717)
18- from feincms3_sites .models import Site , validate_language_codes
18+ from feincms3_sites .models import AbstractPage , Site , validate_language_codes
1919from feincms3_sites .utils import get_site_model , import_callable
2020from testapp .models import Article , CustomSite , Page
2121
@@ -722,26 +722,7 @@ def test_default_language_list_filter(self):
722722 )
723723
724724
725- class SiteModelDeclaredTest (TestCase ):
726- def setUp (self ):
727- self .user = User .objects .create_superuser ("admin" , "admin@test.ch" , "blabla" )
728- deactivate_all ()
729-
730- if settings .USE_CUSTOM_SITE :
731- self .test_site = CustomSite .objects .create (
732- host = "testserver" , is_default = True , title = "Test Site"
733- )
734- else :
735- self .test_site = Site .objects .create (host = "testserver" , is_default = True )
736-
737- def test_get_site_model (self ):
738- if settings .USE_CUSTOM_SITE :
739- self .assertEqual (get_site_model (), CustomSite )
740- else :
741- self .assertEqual (get_site_model (), Site )
742-
743-
744- class InvalidSiteModels (TestCase ):
725+ class SiteModelTest (TestCase ):
745726 @override_settings (FEINCMS3_SITES_SITE_MODEL = "bla" )
746727 def test_invalid_site_model (self ):
747728 with self .assertRaisesRegex (ImproperlyConfigured , "must be of the form" ):
@@ -754,42 +735,30 @@ def test_uninstalled_site_model(self):
754735 ):
755736 get_site_model ()
756737
738+ @override_settings (FEINCMS3_SITES_SITE_MODEL = "testapp.CustomSite" )
739+ def test_get_site_model (self ):
740+ self .assertEqual (get_site_model (), CustomSite )
741+ # self.assertEqual(CustomSite().get_host(), "return value")
742+
743+ @override_settings (FEINCMS3_SITES_SITE_MODEL = "missing.Model" )
744+ def test_swapped_out_model (self ):
745+ with self .assertRaisesRegex (AttributeError , "Manager isn't available" ):
746+ Site .objects .create (host = "testserver" , is_default = True )
757747
758- class UtilsTest (TestCase ):
759748 def test_import_callable (self ):
760749 from math import ceil
761750
762751 self .assertEqual (import_callable (ceil ), ceil )
763752 self .assertEqual (import_callable ("math.ceil" ), ceil )
764753
754+ @isolate_apps ("testapp" )
755+ def test_page_with_missing_unique_together (self ):
756+ """Page subclass without unique_together fails validation"""
757+
758+ class Page (AbstractPage ):
759+ class Meta :
760+ unique_together = []
765761
766- # The following test cases require a separate testapp each, since changing the
767- # settings afterwards will result in AttributeError: Manager isn't available;
768- # 'feincms3_sites.Site' has been swapped for 'missing.Model'
769- #
770- # @override_settings(
771- # FEINCMS3_SITES_SITE_MODEL=''
772- # )
773- # class SiteModelUndeclaredTest(TestCase):
774- # def setUp(self):
775- # self.user = User.objects.create_superuser("admin", "admin@test.ch", "blabla")
776- # deactivate_all()
777- #
778- # self.test_site = Site.objects.create(host="testserver", is_default=True)
779- #
780- # def test_get_site_model(self):
781- # self.assertRaises(ImproperlyConfigured, get_site_model)
782- #
783- #
784- # @override_settings(
785- # FEINCMS3_SITES_SITE_MODEL='missing.Model'
786- # )
787- # class SiteModelUndeclaredTest(TestCase):
788- # def setUp(self):
789- # self.user = User.objects.create_superuser("admin", "admin@test.ch", "blabla")
790- # deactivate_all()
791- #
792- # self.test_site = Site.objects.create(host="testserver", is_default=True)
793- #
794- # def test_get_site_model(self):
795- # self.assertRaises(ImproperlyConfigured, get_site_model)
762+ errors = Page .check ()
763+ error_ids = [error .id for error in errors ]
764+ self .assertIn ("feincms3_sites.E001" , error_ids )
0 commit comments