Skip to content

Commit be6d84f

Browse files
committed
HBX-1410: Investigate the ignored tests in 'org.hibernate.tool.jdbc2cfg.TernarySchema.TestCase'
- Simplify the database creation - Modify the tests to reflect the actual expected behaviour - Reenable the disabled tests Signed-off-by: Koen Aers <[email protected]>
1 parent a9e92d2 commit be6d84f

File tree

3 files changed

+110
-119
lines changed

3 files changed

+110
-119
lines changed

test/common/src/main/java/org/hibernate/tool/jdbc2cfg/TernarySchema/TestCase.java

Lines changed: 95 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
import static org.junit.jupiter.api.Assertions.assertNotNull;
2424

2525
import java.io.File;
26-
import java.sql.SQLException;
2726
import java.util.ArrayList;
2827
import java.util.List;
28+
import java.util.Objects;
2929

3030
import org.hibernate.boot.Metadata;
3131
import org.hibernate.mapping.PersistentClass;
@@ -42,7 +42,6 @@
4242
import org.hibernate.tools.test.util.JdbcUtil;
4343
import org.junit.jupiter.api.AfterEach;
4444
import org.junit.jupiter.api.BeforeEach;
45-
import org.junit.jupiter.api.Disabled;
4645
import org.junit.jupiter.api.Test;
4746
import org.junit.jupiter.api.io.TempDir;
4847

@@ -51,108 +50,102 @@
5150
* @author koen
5251
*/
5352
public class TestCase {
54-
55-
@TempDir
56-
public File outputFolder = new File("output");
57-
58-
private MetadataDescriptor metadataDescriptor = null;
5953

60-
@BeforeEach
61-
public void setUp() {
62-
JdbcUtil.createDatabase(this);
63-
AbstractStrategy c = new AbstractStrategy() {
64-
public List<SchemaSelection> getSchemaSelections() {
65-
List<SchemaSelection> selections = new ArrayList<SchemaSelection>();
66-
selections.add(createSchemaSelection(null, "HTT", null));
67-
selections.add(createSchemaSelection(null, "OTHERSCHEMA", null));
68-
selections.add(createSchemaSelection(null, "THIRDSCHEMA", null));
69-
return selections;
70-
}
71-
};
72-
metadataDescriptor = MetadataDescriptorFactory
73-
.createReverseEngineeringDescriptor(c, null);
74-
}
54+
@TempDir
55+
public File outputFolder = new File("output");
7556

76-
@AfterEach
77-
public void tearDown() {
78-
JdbcUtil.dropDatabase(this);
79-
}
57+
private MetadataDescriptor metadataDescriptor = null;
8058

81-
// TODO Investigate the ignored test: HBX-1410
82-
@Disabled
83-
@Test
84-
public void testTernaryModel() throws SQLException {
85-
assertMultiSchema(metadataDescriptor.createMetadata());
86-
}
59+
@BeforeEach
60+
public void setUp() {
61+
JdbcUtil.createDatabase(this);
62+
AbstractStrategy c = new AbstractStrategy() {
63+
public List<SchemaSelection> getSchemaSelections() {
64+
List<SchemaSelection> selections = new ArrayList<>();
65+
selections.add(createSchemaSelection("PUBLIC"));
66+
selections.add(createSchemaSelection("OTHERSCHEMA"));
67+
selections.add(createSchemaSelection("THIRDSCHEMA"));
68+
return selections;
69+
}
70+
};
71+
metadataDescriptor = MetadataDescriptorFactory
72+
.createReverseEngineeringDescriptor(c, null);
73+
}
8774

88-
// TODO Investigate the ignored test: HBX-1410
89-
@Disabled
90-
@Test
91-
public void testGeneration() {
92-
HbmExporter hme = new HbmExporter();
93-
hme.getProperties().put(ExporterConstants.METADATA_DESCRIPTOR, metadataDescriptor);
94-
hme.getProperties().put(ExporterConstants.DESTINATION_FOLDER, outputFolder);
95-
hme.start();
96-
JUnitUtil.assertIsNonEmptyFile( new File(outputFolder, "Role.hbm.xml") );
97-
JUnitUtil.assertIsNonEmptyFile( new File(outputFolder, "User.hbm.xml") );
98-
JUnitUtil.assertIsNonEmptyFile( new File(outputFolder, "Plainrole.hbm.xml") );
99-
assertEquals(3, outputFolder.listFiles().length);
100-
File[] files = new File[3];
101-
files[0] = new File(outputFolder, "Role.hbm.xml");
102-
files[0] = new File(outputFolder, "User.hbm.xml");
103-
files[0] = new File(outputFolder, "Plainrole.hbm.xml");
104-
assertMultiSchema(MetadataDescriptorFactory
105-
.createNativeDescriptor(null, files, null)
106-
.createMetadata());
107-
}
108-
109-
private void assertMultiSchema(Metadata metadata) {
110-
JUnitUtil.assertIteratorContainsExactly(
111-
"There should be five tables!",
112-
metadata.getEntityBindings().iterator(),
113-
5);
114-
final PersistentClass role = metadata.getEntityBinding("Role");
115-
assertNotNull(role);
116-
PersistentClass userroles = metadata.getEntityBinding("Userroles");
117-
assertNotNull(userroles);
118-
PersistentClass user = metadata.getEntityBinding("User");
119-
assertNotNull(user);
120-
PersistentClass plainRole = metadata.getEntityBinding("Plainrole");
121-
assertNotNull(plainRole);
122-
Property property = role.getProperty("users");
123-
assertEquals(role.getTable().getSchema(), "OTHERSCHEMA");
124-
assertNotNull(property);
125-
property.getValue().accept(new DefaultValueVisitor(true) {
126-
public Object accept(Set o) {
127-
assertEquals(o.getCollectionTable().getSchema(), "THIRDSCHEMA");
128-
return null;
129-
}
130-
});
131-
property = plainRole.getProperty("users");
132-
assertEquals(role.getTable().getSchema(), "OTHERSCHEMA");
133-
assertNotNull(property);
134-
property.getValue().accept(new DefaultValueVisitor(true) {
135-
public Object accept(Set o) {
136-
assertEquals(o.getCollectionTable().getSchema(), null);
137-
return null;
138-
}
139-
});
140-
}
141-
142-
private SchemaSelection createSchemaSelection(String matchCatalog, String matchSchema, String matchTable) {
143-
return new SchemaSelection() {
144-
@Override
145-
public String getMatchCatalog() {
146-
return matchCatalog;
147-
}
148-
@Override
149-
public String getMatchSchema() {
150-
return matchSchema;
151-
}
152-
@Override
153-
public String getMatchTable() {
154-
return matchTable;
155-
}
156-
};
157-
}
75+
@AfterEach
76+
public void tearDown() {
77+
JdbcUtil.dropDatabase(this);
78+
}
79+
80+
@Test
81+
public void testTernaryModel() {
82+
assertMultiSchema(metadataDescriptor.createMetadata());
83+
}
84+
85+
@Test
86+
public void testGeneration() {
87+
HbmExporter hme = new HbmExporter();
88+
hme.getProperties().put(ExporterConstants.METADATA_DESCRIPTOR, metadataDescriptor);
89+
hme.getProperties().put(ExporterConstants.DESTINATION_FOLDER, outputFolder);
90+
hme.start();
91+
JUnitUtil.assertIsNonEmptyFile( new File(outputFolder, "Role.hbm.xml") );
92+
JUnitUtil.assertIsNonEmptyFile( new File(outputFolder, "Member.hbm.xml") );
93+
JUnitUtil.assertIsNonEmptyFile( new File(outputFolder, "Plainrole.hbm.xml") );
94+
assertEquals(3, Objects.requireNonNull( outputFolder.listFiles() ).length);
95+
File[] files = new File[3];
96+
files[0] = new File(outputFolder, "Role.hbm.xml");
97+
files[1] = new File(outputFolder, "Member.hbm.xml");
98+
files[2] = new File(outputFolder, "Plainrole.hbm.xml");
99+
assertMultiSchema(MetadataDescriptorFactory
100+
.createNativeDescriptor(null, files, null)
101+
.createMetadata());
102+
}
103+
104+
private void assertMultiSchema(Metadata metadata) {
105+
JUnitUtil.assertIteratorContainsExactly(
106+
"There should be three entities!",
107+
metadata.getEntityBindings().iterator(),
108+
3);
109+
final PersistentClass role = metadata.getEntityBinding("Role");
110+
assertNotNull(role);
111+
PersistentClass member = metadata.getEntityBinding("Member");
112+
assertNotNull(member);
113+
PersistentClass plainRole = metadata.getEntityBinding("Plainrole");
114+
assertNotNull(plainRole);
115+
Property property = role.getProperty("members");
116+
assertEquals( "OTHERSCHEMA", role.getTable().getSchema() );
117+
assertNotNull(property);
118+
property.getValue().accept(new DefaultValueVisitor(true) {
119+
public Object accept(Set o) {
120+
assertEquals( "THIRDSCHEMA", o.getCollectionTable().getSchema() );
121+
return null;
122+
}
123+
});
124+
property = plainRole.getProperty("members");
125+
assertEquals( "OTHERSCHEMA", role.getTable().getSchema() );
126+
assertNotNull(property);
127+
property.getValue().accept(new DefaultValueVisitor(true) {
128+
public Object accept(Set o) {
129+
assertEquals("PUBLIC", o.getCollectionTable().getSchema() );
130+
return null;
131+
}
132+
});
133+
}
134+
135+
private SchemaSelection createSchemaSelection(String matchSchema) {
136+
return new SchemaSelection() {
137+
@Override
138+
public String getMatchCatalog() {
139+
return null;
140+
}
141+
@Override
142+
public String getMatchSchema() {
143+
return matchSchema;
144+
}
145+
@Override
146+
public String getMatchTable() {
147+
return null;
148+
}
149+
};
150+
}
158151
}
Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
CREATE SCHEMA HTT
2-
CREATE SCHEMA OTHERSCHEMA
3-
CREATE SCHEMA THIRDSCHEMA
4-
CREATE TABLE HTT.USERS ( ID INT NOT NULL, NAME VARCHAR(20), PRIMARY KEY(ID))
5-
CREATE TABLE OTHERSCHEMA.ROLE ( ID INT NOT NULL, NAME VARCHAR(20), PRIMARY KEY(ID))
6-
CREATE TABLE THIRDSCHEMA.USERROLES ( USERID INT NOT NULL, ROLEID INT NOT NULL, PRIMARY KEY(USERID, ROLEID))
7-
ALTER TABLE THIRDSCHEMA.USERROLES ADD CONSTRAINT TOROLES FOREIGN KEY (ROLEID) REFERENCES OTHERSCHEMA.ROLE(ID)
8-
ALTER TABLE THIRDSCHEMA.USERROLES ADD CONSTRAINT TOUSERS FOREIGN KEY (USERID) REFERENCES HTT.USERS(ID)
9-
CREATE TABLE HTT.PLAINROLE ( ID INT NOT NULL, NAME VARCHAR(20), PRIMARY KEY(ID))
10-
CREATE TABLE HTT.PLAINUSERROLES ( USERID INT NOT NULL, ROLEID INT NOT NULL, PRIMARY KEY(USERID, ROLEID))
11-
ALTER TABLE HTT.PLAINUSERROLES ADD CONSTRAINT PLAINTOROLES FOREIGN KEY (ROLEID) REFERENCES HTT.PLAINROLE(ID)
12-
ALTER TABLE HTT.PLAINUSERROLES ADD CONSTRAINT PLAINTOUSERS FOREIGN KEY (USERID) REFERENCES HTT.USERS(ID)
1+
CREATE SCHEMA OTHERSCHEMA
2+
CREATE SCHEMA THIRDSCHEMA
3+
CREATE TABLE PUBLIC.MEMBER ( ID INT NOT NULL, NAME VARCHAR(20), PRIMARY KEY(ID))
4+
CREATE TABLE OTHERSCHEMA.ROLE ( ID INT NOT NULL, NAME VARCHAR(20), PRIMARY KEY(ID))
5+
CREATE TABLE THIRDSCHEMA.MEMBERROLE ( MEMBERID INT NOT NULL, ROLEID INT NOT NULL, PRIMARY KEY(MEMBERID, ROLEID))
6+
ALTER TABLE THIRDSCHEMA.MEMBERROLE ADD CONSTRAINT TOROLES FOREIGN KEY (ROLEID) REFERENCES OTHERSCHEMA.ROLE(ID)
7+
ALTER TABLE THIRDSCHEMA.MEMBERROLE ADD CONSTRAINT TOUSERS FOREIGN KEY (MEMBERID) REFERENCES PUBLIC.MEMBER(ID)
8+
CREATE TABLE PLAINROLE ( ID INT NOT NULL, NAME VARCHAR(20), PRIMARY KEY(ID))
9+
CREATE TABLE PLAINMEMBERROLE ( MEMBERID INT NOT NULL, ROLEID INT NOT NULL, PRIMARY KEY(MEMBERID, ROLEID))
10+
ALTER TABLE PLAINMEMBERROLE ADD CONSTRAINT PLAINTOROLES FOREIGN KEY (ROLEID) REFERENCES PUBLIC.PLAINROLE(ID)
11+
ALTER TABLE PLAINMEMBERROLE ADD CONSTRAINT PLAINTOMEMBERS FOREIGN KEY (MEMBERID) REFERENCES PUBLIC.MEMBER(ID)
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
DROP TABLE HTT.PLAINUSERROLES
2-
DROP TABLE HTT.PLAINROLE
3-
DROP TABLE THIRDSCHEMA.USERROLES
4-
DROP TABLE HTT.USERS
1+
DROP TABLE PUBLIC.PLAINMEMBERROLE
2+
DROP TABLE PUBLIC.PLAINROLE
3+
DROP TABLE THIRDSCHEMA.MEMBERROLE
4+
DROP TABLE PUBLIC.MEMBER
55
DROP TABLE OTHERSCHEMA.ROLE
66
DROP SCHEMA OTHERSCHEMA
77
DROP SCHEMA THIRDSCHEMA
8-
DROP SCHEMA HTT

0 commit comments

Comments
 (0)