Skip to content

Commit db3117d

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 - test should not have a @TenantID
1 parent d1f773b commit db3117d

File tree

1 file changed

+29
-8
lines changed

1 file changed

+29
-8
lines changed

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

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,50 +9,71 @@
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;
13-
import org.hibernate.annotations.TenantId;
14+
import org.hibernate.testing.orm.junit.DialectFeatureChecks;
1415
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
16+
import org.hibernate.testing.orm.junit.JiraKey;
1517
import org.hibernate.testing.orm.junit.Jpa;
18+
import org.hibernate.testing.orm.junit.RequiresDialectFeature;
1619
import org.hibernate.testing.orm.junit.Setting;
20+
import org.hibernate.testing.orm.junit.SkipForDialect;
1721
import org.junit.jupiter.api.Test;
1822

1923
import static org.hibernate.cfg.MultiTenancySettings.MULTI_TENANT_IDENTIFIER_RESOLVER;
2024
import static org.hibernate.cfg.MultiTenancySettings.MULTI_TENANT_SCHEMA_MAPPER;
25+
import static org.junit.jupiter.api.AssertionsKt.assertNotNull;
26+
import static org.junit.jupiter.api.AssertionsKt.assertNull;
2127

2228
@Jpa(annotatedClasses = {SchemaBasedMultitenancyTest.Person.class},
2329
integrationSettings =
2430
{@Setting(name = MULTI_TENANT_SCHEMA_MAPPER,
2531
value = "org.hibernate.orm.test.multitenancy.SchemaBasedMultitenancyTest$MyMapper"),
2632
@Setting(name = MULTI_TENANT_IDENTIFIER_RESOLVER,
2733
value = "org.hibernate.orm.test.multitenancy.SchemaBasedMultitenancyTest$MyResolver")})
34+
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportSchemaCreation.class)
35+
@SkipForDialect(dialectClass = SybaseASEDialect.class, reason = "getSchema() method not implemented by jTDS")
36+
@JiraKey("HHH-19559")
2837
public class SchemaBasedMultitenancyTest {
38+
private static String currentTenantIdentifier;
39+
2940
@Test void test(EntityManagerFactoryScope scope) {
3041
var schemaManager = (SchemaManager) scope.getEntityManagerFactory().getSchemaManager();
31-
SchemaManager managerForTenantSchema = schemaManager.forSchema( "HELLO" );
32-
managerForTenantSchema.drop(true);
33-
managerForTenantSchema.create( true );
42+
createSchema( schemaManager, "HELLO" );
43+
createSchema( schemaManager, "GOODBYE" );
44+
currentTenantIdentifier = "hello";
3445
scope.inTransaction( session -> {
3546
Person person = new Person();
3647
person.ssn = "123456789";
37-
person.tenantId = "hello";
3848
person.name = "Gavin";
3949
session.persist( person );
4050
} );
51+
scope.inTransaction( session -> {
52+
assertNotNull( session.find( Person.class, "123456789" ) );
53+
} );
54+
currentTenantIdentifier = "goodbye";
55+
scope.inTransaction( session -> {
56+
assertNull( session.find( Person.class, "123456789" ) );
57+
} );
58+
}
59+
60+
private static void createSchema(SchemaManager schemaManager, String schemaName) {
61+
SchemaManager managerForTenantSchema = schemaManager.forSchema( schemaName );
62+
managerForTenantSchema.drop(true);
63+
managerForTenantSchema.create( true );
4164
}
4265

4366
@Entity(name = "PersonForTenant")
4467
static class Person {
4568
@Id
4669
String ssn;
47-
@TenantId
48-
String tenantId;
4970
private String name;
5071
}
5172

5273
public static class MyResolver implements CurrentTenantIdentifierResolver<String> {
5374
@Override
5475
public @NonNull String resolveCurrentTenantIdentifier() {
55-
return "hello";
76+
return currentTenantIdentifier;
5677
}
5778

5879
@Override

0 commit comments

Comments
 (0)