def test_sync_tenant(self): """ When editing an existing tenant, all data should be kept. """ tenant = get_tenant_model()(schema_name='test') tenant.save() domain = get_tenant_domain_model()(tenant=tenant, domain='something.test.com') domain.save() # go to tenant's path connection.set_tenant(tenant) # add some data DummyModel(name="Schemas are").save() DummyModel(name="awesome!").save() # edit tenant connection.set_schema_to_public() tenant.domain_urls = ['example.com'] tenant.save() connection.set_tenant(tenant) # test if data is still there self.assertEqual(DummyModel.objects.count(), 2) self.created = [domain, tenant]
def test_switching_search_path(self): tenant1 = Tenant(domain_url='something.test.com', schema_name='tenant1') tenant1.save(verbosity=BaseTestCase.get_verbosity()) connection.set_schema_to_public() tenant2 = Tenant(domain_url='example.com', schema_name='tenant2') tenant2.save(verbosity=BaseTestCase.get_verbosity()) # go to tenant1's path connection.set_tenant(tenant1) # add some data, 2 DummyModels for tenant1 DummyModel(name="Schemas are").save() DummyModel(name="awesome!").save() # switch temporarily to tenant2's path with tenant_context(tenant2): # add some data, 3 DummyModels for tenant2 DummyModel(name="Man,").save() DummyModel(name="testing").save() DummyModel(name="is great!").save() # we should be back to tenant1's path, test what we have self.assertEqual(2, DummyModel.objects.count()) # switch back to tenant2's path with tenant_context(tenant2): self.assertEqual(3, DummyModel.objects.count())
def test_switching_tenant_without_previous_tenant(self): tenant = Tenant(domain_url='something.test.com', schema_name='test') tenant.save(verbosity=BaseTestCase.get_verbosity()) connection.tenant = None with tenant_context(tenant): DummyModel(name="No exception please").save() connection.tenant = None with schema_context(tenant.schema_name): DummyModel(name="Survived it!").save()
def test_switching_tenant_without_previous_tenant(self): tenant = get_tenant_model()(schema_name='test') tenant.save() domain = get_tenant_domain_model()(tenant=tenant, domain='something.test.com') domain.save() connection.tenant = None with tenant_context(tenant): DummyModel(name="No exception please").save() connection.tenant = None with schema_context(tenant.schema_name): DummyModel(name="Survived it!").save()
def test_switching_search_path_limited_calls(self): tenant1 = get_tenant_model()(schema_name='tenant1') tenant1.save() domain1 = get_tenant_domain_model()(tenant=tenant1, domain='something.test.com') domain1.save() connection.set_schema_to_public() tenant2 = get_tenant_model()(schema_name='tenant2') tenant2.save() domain2 = get_tenant_domain_model()(tenant=tenant2, domain='example.com') domain2.save() # set path is not executed when setting tenant so 0 queries expected with self.assertNumQueries(0): connection.set_tenant(tenant1) # switch temporarily to tenant2's path # 1 query to set search path + 3 to save data with self.assertNumQueries(4): with tenant_context(tenant2): DummyModel(name="Man,").save() DummyModel(name="testing").save() DummyModel(name="is great!").save() # 0 queries as search path not set here with self.assertNumQueries(0): connection.set_tenant(tenant1) # 1 set search path + 1 count with self.assertNumQueries(2): self.assertEqual(0, DummyModel.objects.count()) # 0 queries as search path not set here with self.assertNumQueries(0): connection.set_tenant(tenant2) # 1 set search path + 1 count with self.assertNumQueries(2): self.assertEqual(3, DummyModel.objects.count()) self.created = [domain2, domain1, tenant2, tenant1]
def test_switching_search_path(self): tenant1 = get_tenant_model()(schema_name='tenant1') tenant1.save() domain1 = get_tenant_domain_model()(tenant=tenant1, domain='something.test.com') domain1.save() connection.set_schema_to_public() tenant2 = get_tenant_model()(schema_name='tenant2') tenant2.save() domain2 = get_tenant_domain_model()(tenant=tenant2, domain='example.com') domain2.save() # go to tenant1's path connection.set_tenant(tenant1) # add some data, 2 DummyModels for tenant1 DummyModel(name="Schemas are").save() DummyModel(name="awesome!").save() # switch temporarily to tenant2's path with self.assertNumQueries(6): with tenant_context(tenant2): # add some data, 3 DummyModels for tenant2 DummyModel(name="Man,").save() DummyModel(name="testing").save() DummyModel(name="is great!").save() # we should be back to tenant1's path, test what we have with self.assertNumQueries(2): self.assertEqual(2, DummyModel.objects.count()) # switch back to tenant2's path with self.assertNumQueries(2): with tenant_context(tenant2): self.assertEqual(3, DummyModel.objects.count()) self.created = [domain2, domain1, tenant2, tenant1]
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(verbosity=BaseTestCase.get_verbosity()) # go to tenant's path connection.set_tenant(tenant) # add some data DummyModel(name="Schemas are").save() DummyModel(name="awesome!").save() # edit tenant connection.set_schema_to_public() tenant.domain_url = 'example.com' tenant.save(verbosity=BaseTestCase.get_verbosity()) connection.set_tenant(tenant) # test if data is still there self.assertEqual(DummyModel.objects.count(), 2)
def test_schema_func(): DummyModel(name='Survived it!').save()
def test_tenant_func(): DummyModel(name='No exception please').save()