Skip to content

Commit b2502b4

Browse files
mbelladebeikov
authored andcommitted
HHH-17612 Add test for issue
1 parent dc72c94 commit b2502b4

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.envers.integration.metamodel;
6+
7+
import jakarta.persistence.Column;
8+
import jakarta.persistence.Entity;
9+
import jakarta.persistence.Id;
10+
import org.hibernate.annotations.CreationTimestamp;
11+
import org.hibernate.boot.MetadataSources;
12+
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
13+
import org.hibernate.engine.spi.SessionFactoryImplementor;
14+
import org.hibernate.envers.Audited;
15+
import org.hibernate.envers.configuration.EnversSettings;
16+
import org.hibernate.internal.HEMLogging;
17+
import org.hibernate.metamodel.internal.MetadataContext;
18+
import org.hibernate.testing.logger.LogInspectionHelper;
19+
import org.hibernate.testing.logger.TriggerOnPrefixLogListener;
20+
import org.hibernate.testing.orm.junit.Jira;
21+
import org.hibernate.testing.util.ServiceRegistryUtil;
22+
import org.junit.jupiter.api.BeforeAll;
23+
import org.junit.jupiter.api.Test;
24+
import org.junit.jupiter.api.TestInstance;
25+
26+
import java.time.Instant;
27+
28+
import static org.assertj.core.api.Assertions.assertThat;
29+
30+
/**
31+
* @author Marco Belladelli
32+
*/
33+
@Jira( "https://hibernate.atlassian.net/browse/HHH-17612" )
34+
@TestInstance( TestInstance.Lifecycle.PER_CLASS )
35+
public class RevisionEntitiesMetamodelTest {
36+
private TriggerOnPrefixLogListener trigger;
37+
38+
@BeforeAll
39+
public void setUp() {
40+
trigger = new TriggerOnPrefixLogListener( "HHH015007: Illegal argument on static metamodel field injection" );
41+
LogInspectionHelper.registerListener( trigger, HEMLogging.messageLogger( MetadataContext.class ) );
42+
}
43+
44+
@Test
45+
public void testDefaultRevisionEntity() {
46+
try (final SessionFactoryImplementor ignored = buildSessionFactory( false, true )) {
47+
assertThat( trigger.wasTriggered() ).isFalse();
48+
}
49+
}
50+
51+
@Test
52+
public void testSequenceIdRevisionEntity() {
53+
try (final SessionFactoryImplementor ignored = buildSessionFactory( false, false )) {
54+
assertThat( trigger.wasTriggered() ).isFalse();
55+
}
56+
}
57+
58+
@Test
59+
public void testDefaultTrackingModifiedEntitiesRevisionEntity() {
60+
try (final SessionFactoryImplementor ignored = buildSessionFactory( true, true )) {
61+
assertThat( trigger.wasTriggered() ).isFalse();
62+
}
63+
}
64+
65+
@Test
66+
public void testSequenceIdTrackingModifiedEntitiesRevisionEntity() {
67+
try (final SessionFactoryImplementor ignored = buildSessionFactory( true, false )) {
68+
assertThat( trigger.wasTriggered() ).isFalse();
69+
}
70+
}
71+
72+
@SuppressWarnings( "resource" )
73+
private static SessionFactoryImplementor buildSessionFactory(boolean trackEntities, boolean nativeId) {
74+
final StandardServiceRegistryBuilder registryBuilder = ServiceRegistryUtil.serviceRegistryBuilder();
75+
registryBuilder.applySetting( EnversSettings.TRACK_ENTITIES_CHANGED_IN_REVISION, trackEntities );
76+
registryBuilder.applySetting( EnversSettings.USE_REVISION_ENTITY_WITH_NATIVE_ID, nativeId );
77+
return new MetadataSources( registryBuilder.build() )
78+
.addAnnotatedClasses( Customer.class )
79+
.buildMetadata()
80+
.buildSessionFactory()
81+
.unwrap( SessionFactoryImplementor.class );
82+
}
83+
84+
@Audited
85+
@Entity( name = "Customer" )
86+
@SuppressWarnings( "unused" )
87+
public static class Customer {
88+
@Id
89+
private Long id;
90+
91+
private String firstName;
92+
93+
private String lastName;
94+
95+
@Column( name = "created_on" )
96+
@CreationTimestamp
97+
private Instant createdOn;
98+
}
99+
}

0 commit comments

Comments
 (0)