TenantTestCase now runs in a transaction and no longer truncates all tables. Fixes #169.

This commit is contained in:
Bernardo Pires 2014-12-26 16:09:58 +01:00
parent e9ba644ad2
commit e1e2067eaf
3 changed files with 21 additions and 9 deletions

View File

@ -1,9 +1,9 @@
from django.db import connection
from django.test import TransactionTestCase
from django.test import TestCase
from tenant_schemas.utils import get_tenant_model
class TenantTestCase(TransactionTestCase):
class TenantTestCase(TestCase):
@classmethod
def setUpClass(cls):
# create a tenant
@ -20,4 +20,4 @@ class TenantTestCase(TransactionTestCase):
cls.tenant.delete()
cursor = connection.cursor()
cursor.execute('DROP SCHEMA test CASCADE')
cursor.execute('DROP SCHEMA test CASCADE')

View File

@ -1,13 +1,14 @@
from django.conf import settings
from django.db import connection
from tenant_schemas.tests.models import Tenant, NonAutoSyncTenant, DummyModel
from tenant_schemas.tests.testcases import BaseTestCase
from tenant_schemas.utils import tenant_context, schema_context, schema_exists
from tenant_schemas.utils import tenant_context, schema_context, schema_exists, get_tenant_model
from tenant_schemas.test.cases import TenantTestCase
class TenantTestCase(BaseTestCase):
class TenantTest(BaseTestCase):
def tearDown(self):
super(TenantTestCase, self).tearDown()
super(TenantTest, self).tearDown()
NonAutoSyncTenant.objects.all().delete()
def test_tenant_schema_is_created(self):
@ -101,3 +102,12 @@ class TenantTestCase(BaseTestCase):
connection.tenant = None
with schema_context(tenant.schema_name):
DummyModel(name="Survived it!").save()
class TenantTestCaseTest(BaseTestCase, TenantTestCase):
def test_tenant_survives_after_method1(self):
# There are two tenants (public plus the one created by TenantTestCase)
self.assertEquals(1 + 1, get_tenant_model().objects.all().count())
def test_tenant_survives_after_method2(self):
self.assertEquals(1 + 1, get_tenant_model().objects.all().count())

View File

@ -12,13 +12,15 @@ class BaseTestCase(TransactionTestCase):
"""
@classmethod
def setUpClass(cls):
# settings needs some patching
settings.TENANT_MODEL = 'tenant_schemas.Tenant'
settings.TENANT_APPS = ('tenant_schemas',
'django.contrib.contenttypes',
'django.contrib.auth', )
super(BaseTestCase, cls).setUpClass()
def setUp(self):
# settings needs some patching
settings.TENANT_MODEL = 'tenant_schemas.Tenant'
connection.set_schema_to_public()
# add the public tenant
self.public_tenant_domain = 'test.com'