Skip to content

Commit a7ab0d5

Browse files
committed
HHH-19559 improve the test
- skip test on Sybase due to incomplete jTDS implementation - also skip on Oracle and MySQL since we can't create schemas
1 parent d1f773b commit a7ab0d5

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

hibernate-core/src/test/java/org/hibernate/orm/test/multitenancy/SchemaBasedMultitenancyTest.java

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,60 @@
99
import org.checkerframework.checker.nullness.qual.NonNull;
1010
import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
1111
import org.hibernate.context.spi.TenantSchemaMapper;
12+
import org.hibernate.dialect.SybaseASEDialect;
1213
import org.hibernate.relational.SchemaManager;
1314
import org.hibernate.annotations.TenantId;
15+
import org.hibernate.testing.orm.junit.DialectFeatureChecks;
1416
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
17+
import org.hibernate.testing.orm.junit.JiraKey;
1518
import org.hibernate.testing.orm.junit.Jpa;
19+
import org.hibernate.testing.orm.junit.RequiresDialectFeature;
1620
import org.hibernate.testing.orm.junit.Setting;
21+
import org.hibernate.testing.orm.junit.SkipForDialect;
1722
import org.junit.jupiter.api.Test;
1823

1924
import static org.hibernate.cfg.MultiTenancySettings.MULTI_TENANT_IDENTIFIER_RESOLVER;
2025
import static org.hibernate.cfg.MultiTenancySettings.MULTI_TENANT_SCHEMA_MAPPER;
26+
import static org.junit.jupiter.api.AssertionsKt.assertNotNull;
27+
import static org.junit.jupiter.api.AssertionsKt.assertNull;
2128

2229
@Jpa(annotatedClasses = {SchemaBasedMultitenancyTest.Person.class},
2330
integrationSettings =
2431
{@Setting(name = MULTI_TENANT_SCHEMA_MAPPER,
2532
value = "org.hibernate.orm.test.multitenancy.SchemaBasedMultitenancyTest$MyMapper"),
2633
@Setting(name = MULTI_TENANT_IDENTIFIER_RESOLVER,
2734
value = "org.hibernate.orm.test.multitenancy.SchemaBasedMultitenancyTest$MyResolver")})
35+
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportSchemaCreation.class)
36+
@SkipForDialect(dialectClass = SybaseASEDialect.class, reason = "getSchema() method not implemented by jTDS")
37+
@JiraKey("HHH-19559")
2838
public class SchemaBasedMultitenancyTest {
39+
private static String currentTenantIdentifier;
40+
2941
@Test void test(EntityManagerFactoryScope scope) {
3042
var schemaManager = (SchemaManager) scope.getEntityManagerFactory().getSchemaManager();
31-
SchemaManager managerForTenantSchema = schemaManager.forSchema( "HELLO" );
32-
managerForTenantSchema.drop(true);
33-
managerForTenantSchema.create( true );
43+
createSchema( schemaManager, "HELLO" );
44+
createSchema( schemaManager, "GOODBYE" );
45+
currentTenantIdentifier = "hello";
3446
scope.inTransaction( session -> {
3547
Person person = new Person();
3648
person.ssn = "123456789";
3749
person.tenantId = "hello";
3850
person.name = "Gavin";
3951
session.persist( person );
4052
} );
53+
scope.inTransaction( session -> {
54+
assertNotNull( session.find( Person.class, "123456789" ) );
55+
} );
56+
currentTenantIdentifier = "goodbye";
57+
scope.inTransaction( session -> {
58+
assertNull( session.find( Person.class, "123456789" ) );
59+
} );
60+
}
61+
62+
private static void createSchema(SchemaManager schemaManager, String schemaName) {
63+
SchemaManager managerForTenantSchema = schemaManager.forSchema( schemaName );
64+
managerForTenantSchema.drop(true);
65+
managerForTenantSchema.create( true );
4166
}
4267

4368
@Entity(name = "PersonForTenant")
@@ -52,7 +77,7 @@ static class Person {
5277
public static class MyResolver implements CurrentTenantIdentifierResolver<String> {
5378
@Override
5479
public @NonNull String resolveCurrentTenantIdentifier() {
55-
return "hello";
80+
return currentTenantIdentifier;
5681
}
5782

5883
@Override

0 commit comments

Comments
 (0)