Skip to content

Commit

Permalink
Tests now respect verbosity. Thanks @samgre. Fixes #245.
Browse files Browse the repository at this point in the history
  • Loading branch information
bernardopires committed Jul 30, 2015
1 parent 5bb4ccf commit ea3edf4
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 22 deletions.
3 changes: 2 additions & 1 deletion tenant_schemas/management/commands/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,4 +169,5 @@ def handle(self, *args, **options):
self.shared_apps = settings.SHARED_APPS

def _notice(self, output):
self.stdout.write(self.style.NOTICE(output))
if int(self.options.get('verbosity', 1)) >= 1:
self.stdout.write(self.style.NOTICE(output))
3 changes: 2 additions & 1 deletion tenant_schemas/management/commands/migrate_schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ def handle(self, *args, **options):
self.run_migrations(tenant.schema_name, settings.TENANT_APPS)

def run_migrations(self, schema_name, included_apps):
self._notice("=== Running migrate for schema %s" % schema_name)
if int(self.options.get('verbosity', 1)) >= 1:
self._notice("=== Running migrate for schema %s" % schema_name)
connection.set_schema(schema_name)
command = MigrateCommand()
command.execute(*self.args, **self.options)
Expand Down
3 changes: 2 additions & 1 deletion tenant_schemas/management/commands/sync_schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ def handle(self, *args, **options):
self.sync_tenant_apps(self.schema_name)

def _sync_tenant(self, tenant):
self._notice("=== Running syncdb for schema: %s" % tenant.schema_name)
if int(self.options.get('verbosity', 1)) >= 1:
self._notice("=== Running syncdb for schema: %s" % tenant.schema_name)
connection.set_tenant(tenant, include_public=False)
SyncdbCommand().execute(**self.options)

Expand Down
4 changes: 2 additions & 2 deletions tenant_schemas/tests/test_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def setUpClass(cls):
settings.INSTALLED_APPS = settings.SHARED_APPS + settings.TENANT_APPS
cls.sync_shared()
cls.public_tenant = Tenant(domain_url='test.com', schema_name=get_public_schema_name())
cls.public_tenant.save()
cls.public_tenant.save(verbosity=BaseTestCase.get_verbosity())

def setUp(self):
super(RoutesTestCase, self).setUp()
Expand All @@ -27,7 +27,7 @@ def setUp(self):

self.tenant_domain = 'tenant.test.com'
self.tenant = Tenant(domain_url=self.tenant_domain, schema_name='test')
self.tenant.save()
self.tenant.save(verbosity=BaseTestCase.get_verbosity())

def test_tenant_routing(self):
"""
Expand Down
28 changes: 14 additions & 14 deletions tenant_schemas/tests/test_tenants.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ def setUpClass(cls):
'django.contrib.auth', )
settings.INSTALLED_APPS = settings.SHARED_APPS + settings.TENANT_APPS
cls.sync_shared()
Tenant(domain_url='test.com', schema_name=get_public_schema_name()).save()
Tenant(domain_url='test.com', schema_name=get_public_schema_name()).save(verbosity=cls.get_verbosity())

def test_tenant_schema_is_created(self):
"""
When saving a tenant, it's schema should be created.
"""
tenant = Tenant(domain_url='something.test.com', schema_name='test')
tenant.save()
tenant.save(verbosity=BaseTestCase.get_verbosity())

self.assertTrue(schema_exists(tenant.schema_name))

Expand All @@ -48,7 +48,7 @@ def test_non_auto_sync_tenant(self):

tenant = NonAutoSyncTenant(domain_url='something.test.com',
schema_name='test')
tenant.save()
tenant.save(verbosity=BaseTestCase.get_verbosity())

self.assertFalse(schema_exists(tenant.schema_name))

Expand All @@ -57,7 +57,7 @@ def test_sync_tenant(self):
When editing an existing tenant, all data should be kept.
"""
tenant = Tenant(domain_url='something.test.com', schema_name='test')
tenant.save()
tenant.save(verbosity=BaseTestCase.get_verbosity())

# go to tenant's path
connection.set_tenant(tenant)
Expand All @@ -69,7 +69,7 @@ def test_sync_tenant(self):
# edit tenant
connection.set_schema_to_public()
tenant.domain_url = 'example.com'
tenant.save()
tenant.save(verbosity=BaseTestCase.get_verbosity())

connection.set_tenant(tenant)

Expand All @@ -79,11 +79,11 @@ def test_sync_tenant(self):
def test_switching_search_path(self):
tenant1 = Tenant(domain_url='something.test.com',
schema_name='tenant1')
tenant1.save()
tenant1.save(verbosity=BaseTestCase.get_verbosity())

connection.set_schema_to_public()
tenant2 = Tenant(domain_url='example.com', schema_name='tenant2')
tenant2.save()
tenant2.save(verbosity=BaseTestCase.get_verbosity())

# go to tenant1's path
connection.set_tenant(tenant1)
Expand All @@ -108,7 +108,7 @@ def test_switching_search_path(self):

def test_switching_tenant_without_previous_tenant(self):
tenant = Tenant(domain_url='something.test.com', schema_name='test')
tenant.save()
tenant.save(verbosity=BaseTestCase.get_verbosity())

connection.tenant = None
with tenant_context(tenant):
Expand Down Expand Up @@ -154,7 +154,7 @@ def test_tenant_apps_does_not_sync_shared_apps(self):
settings.INSTALLED_APPS = settings.SHARED_APPS + settings.TENANT_APPS
self.sync_shared()
tenant = Tenant(domain_url='arbitrary.test.com', schema_name='test')
tenant.save()
tenant.save(verbosity=BaseTestCase.get_verbosity())

tenant_tables = self.get_tables_list_in_schema(tenant.schema_name)
self.assertEqual(1 + self.MIGRATION_TABLE_SIZE, len(tenant_tables))
Expand All @@ -173,7 +173,7 @@ def test_tenant_apps_and_shared_apps_can_have_the_same_apps(self):
settings.INSTALLED_APPS = settings.SHARED_APPS + settings.TENANT_APPS
self.sync_shared()
tenant = Tenant(domain_url='arbitrary.test.com', schema_name='test')
tenant.save()
tenant.save(verbosity=BaseTestCase.get_verbosity())

shared_tables = self.get_tables_list_in_schema(get_public_schema_name())
tenant_tables = self.get_tables_list_in_schema(tenant.schema_name)
Expand All @@ -193,7 +193,7 @@ def test_content_types_is_not_mandatory(self):
settings.INSTALLED_APPS = settings.SHARED_APPS + settings.TENANT_APPS
self.sync_shared()
tenant = Tenant(domain_url='something.test.com', schema_name='test')
tenant.save()
tenant.save(verbosity=BaseTestCase.get_verbosity())

shared_tables = self.get_tables_list_in_schema(get_public_schema_name())
tenant_tables = self.get_tables_list_in_schema(tenant.schema_name)
Expand All @@ -214,7 +214,7 @@ def test_command(self):
settings.TENANT_APPS = ()
settings.INSTALLED_APPS = settings.SHARED_APPS + settings.TENANT_APPS
self.sync_shared()
Tenant(domain_url='localhost', schema_name='public').save()
Tenant(domain_url='localhost', schema_name='public').save(verbosity=BaseTestCase.get_verbosity())

out = StringIO()
call_command('tenant_command', 'dumpdata', 'tenant_schemas', natural_foreign=True,
Expand All @@ -235,11 +235,11 @@ def setUpClass(cls):
settings.TENANT_APPS = ('dts_test_app', )
settings.INSTALLED_APPS = settings.SHARED_APPS + settings.TENANT_APPS
cls.sync_shared()
Tenant(domain_url='test.com', schema_name=get_public_schema_name()).save()
Tenant(domain_url='test.com', schema_name=get_public_schema_name()).save(verbosity=cls.get_verbosity())

# Create a tenant
cls.tenant = Tenant(domain_url='tenant.test.com', schema_name='tenant')
cls.tenant.save()
cls.tenant.save(verbosity=cls.get_verbosity())

# Create some users
with schema_context(get_public_schema_name()): # this could actually also be executed inside a tenant
Expand Down
14 changes: 11 additions & 3 deletions tenant_schemas/tests/testcases.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import django
import inspect
from django.conf import settings
from django.core.management import call_command
from django.db import connection
Expand Down Expand Up @@ -33,6 +34,14 @@ def setUp(self):
connection.set_schema_to_public()
super(BaseTestCase, self).setUp()

@classmethod
def get_verbosity(self):
for s in reversed(inspect.stack()):
options = s[0].f_locals.get('options')
if isinstance(options, dict):
return int(options['verbosity'])
return 1

@classmethod
def get_tables_list_in_schema(cls, schema_name):
cursor = connection.cursor()
Expand All @@ -47,13 +56,12 @@ def sync_shared(cls):
call_command('migrate_schemas',
schema_name=get_public_schema_name(),
interactive=False,
verbosity=0)
verbosity=cls.get_verbosity())
else:
call_command('sync_schemas',
schema_name=get_public_schema_name(),
tenant=False,
public=True,
interactive=False,
migrate_all=True,
verbosity=0,
)
verbosity=cls.get_verbosity())

0 comments on commit ea3edf4

Please sign in to comment.