40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from django.test import TestCase
|
|
|
|
from admin_interface.models import Theme
|
|
|
|
from .routers import DatabaseAppsRouter
|
|
|
|
try:
|
|
from django.test.testcases import DatabaseOperationForbidden
|
|
except ImportError:
|
|
DatabaseOperationForbidden = AssertionError
|
|
|
|
|
|
class AdminInterfaceModelsWithDBRoutingTestCase(TestCase):
|
|
databases = ["replica"]
|
|
|
|
def test_standard_dbrouter(self):
|
|
router = DatabaseAppsRouter()
|
|
db_for_theme = router.db_for_read(Theme)
|
|
self.assertEqual(db_for_theme, "default")
|
|
|
|
def test_dbrouter_selects_correct_db(self):
|
|
DATABASE_APPS_MAPPING = {
|
|
"admin_interface": "replica",
|
|
}
|
|
router = DatabaseAppsRouter(db_map=DATABASE_APPS_MAPPING)
|
|
db_for_theme = router.db_for_read(Theme)
|
|
self.assertEqual(db_for_theme, "replica")
|
|
|
|
def test_dbrouter_errors_when_fetching_from_default(self):
|
|
with self.assertRaises(DatabaseOperationForbidden):
|
|
Theme.objects.get_active()
|
|
|
|
def test_dbrouter_fetches_db(self):
|
|
DATABASE_APPS_MAPPING = {
|
|
"admin_interface": "replica",
|
|
}
|
|
router = DatabaseAppsRouter(db_map=DATABASE_APPS_MAPPING)
|
|
with self.settings(DATABASE_ROUTERS=[router]):
|
|
Theme.objects.get_active()
|