1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
from unittest.mock import MagicMock
import pytest
from django_pgschemas.schema import Schema, activate, deactivate, get_default_schema
from django_pgschemas.signals import schema_activate
from django_pgschemas.utils import schema_exists
def test_schema_activate():
deactivate()
schema = Schema.create(schema_name="test")
receiver = MagicMock()
schema_activate.connect(receiver)
activate(schema)
schema_activate.disconnect(receiver)
receiver.assert_called_once_with(signal=schema_activate, sender=Schema, schema=schema)
def test_schema_double_activate():
deactivate()
schema = Schema.create(schema_name="test")
receiver = MagicMock()
schema_activate.connect(receiver)
activate(schema)
activate(schema)
schema_activate.disconnect(receiver)
receiver.assert_called_once_with(signal=schema_activate, sender=Schema, schema=schema)
def test_schema_deactivate():
schema = Schema.create(schema_name="test")
activate(schema)
receiver = MagicMock()
schema_activate.connect(receiver)
deactivate()
schema_activate.disconnect(receiver)
receiver.assert_called_once_with(
signal=schema_activate, sender=Schema, schema=get_default_schema()
)
def test_schema_override():
deactivate()
schema = Schema.create(schema_name="test")
receiver = MagicMock()
schema_activate.connect(receiver)
with schema:
pass
schema_activate.disconnect(receiver)
receiver.assert_called_once_with(signal=schema_activate, sender=Schema, schema=schema)
def test_tenant_delete_callback(TenantModel, db):
if TenantModel is None:
pytest.skip("Dynamic tenants are not in use")
backup_create, backup_drop = TenantModel.auto_create_schema, TenantModel.auto_drop_schema
TenantModel.auto_create_schema = False
TenantModel.auto_drop_schema = True
tenant = TenantModel(schema_name="tenant_signal")
tenant.save()
tenant.create_schema(sync_schema=False)
assert schema_exists("tenant_signal")
TenantModel.objects.all().delete()
assert not schema_exists("tenant_signal")
TenantModel.auto_create_schema, TenantModel.auto_drop_schema = backup_create, backup_drop
|