Skip to content

Commit 684f317

Browse files
committed
[#1792] Add test for getSingleResultOrNull and getSingleResult
We are checking that it doesn't throw a NullPointerException if the result of the query doesn't have any columns names.
1 parent 26d96e9 commit 684f317

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

hibernate-reactive-core/src/test/java/org/hibernate/reactive/CustomOneToOneStoredProcedureSqlTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
import io.vertx.junit5.VertxTestContext;
1010
import jakarta.persistence.*;
1111

12+
import org.hibernate.HibernateException;
1213
import org.hibernate.annotations.SQLDelete;
1314
import org.hibernate.annotations.SQLInsert;
1415
import org.hibernate.reactive.testing.DBSelectionExtension;
16+
import org.hibernate.reactive.testing.ReactiveAssertions;
1517

1618
import org.junit.jupiter.api.Assertions;
1719
import org.junit.jupiter.api.BeforeEach;
@@ -23,6 +25,7 @@
2325
import java.util.List;
2426

2527
import static java.util.concurrent.TimeUnit.*;
28+
import static org.assertj.core.api.Assertions.assertThat;
2629
import static org.hibernate.reactive.containers.DatabaseConfiguration.DBType.*;
2730
import static org.hibernate.reactive.testing.DBSelectionExtension.*;
2831
import static org.junit.jupiter.api.Assertions.*;
@@ -84,6 +87,22 @@ public void populateDb(VertxTestContext context) {
8487
);
8588
}
8689

90+
@Test
91+
public void testFailureWithGetSingleResultOrNull(VertxTestContext context) {
92+
test( context, ReactiveAssertions.assertThrown( HibernateException.class, getMutinySessionFactory()
93+
.withTransaction( s -> s.createNativeQuery( INSERT_DRIVER_LICENCE_SQL ).getSingleResultOrNull() ) )
94+
.invoke( e -> assertThat( e ).hasMessageContainingAll( "HR000080:", INSERT_DRIVER_LICENCE_SQL ) )
95+
);
96+
}
97+
98+
@Test
99+
public void testFailureWithGetSingleResult(VertxTestContext context) {
100+
test( context, ReactiveAssertions.assertThrown( HibernateException.class, getSessionFactory()
101+
.withTransaction( s -> s.createNativeQuery( INSERT_DRIVER_LICENCE_SQL ).getSingleResult() ) )
102+
.thenAccept( e -> assertThat( e ).hasMessageContainingAll( "HR000080:", INSERT_DRIVER_LICENCE_SQL ) )
103+
);
104+
}
105+
87106
@Test
88107
public void testInsertStoredProcedureDriverLicence(VertxTestContext context) {
89108
test( context, openSession().thenCompose( session -> session

hibernate-reactive-core/src/test/java/org/hibernate/reactive/CustomStoredProcedureSqlTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
import java.util.Collection;
1010
import java.util.List;
1111

12+
import org.hibernate.HibernateException;
1213
import org.hibernate.annotations.SQLDelete;
1314
import org.hibernate.annotations.SQLInsert;
1415
import org.hibernate.annotations.SQLUpdate;
1516
import org.hibernate.reactive.testing.DBSelectionExtension;
17+
import org.hibernate.reactive.testing.ReactiveAssertions;
1618

1719
import org.junit.jupiter.api.Assertions;
1820
import org.junit.jupiter.api.BeforeEach;
@@ -29,6 +31,7 @@
2931
import jakarta.persistence.Table;
3032

3133
import static java.util.concurrent.TimeUnit.MINUTES;
34+
import static org.assertj.core.api.Assertions.assertThat;
3235
import static org.hibernate.reactive.containers.DatabaseConfiguration.DBType.POSTGRESQL;
3336
import static org.hibernate.reactive.testing.DBSelectionExtension.runOnlyFor;
3437
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -102,6 +105,22 @@ public void populateDb(VertxTestContext context) {
102105
);
103106
}
104107

108+
@Test
109+
public void testFailureWithGetSingleResultOrNull(VertxTestContext context) {
110+
test( context, ReactiveAssertions.assertThrown( HibernateException.class, getMutinySessionFactory()
111+
.withTransaction( s -> s.createNativeQuery( INSERT_SP_SQL ).getSingleResultOrNull() ) )
112+
.invoke( e -> assertThat( e ).hasMessageContainingAll( "HR000080:", INSERT_SP_SQL ) )
113+
);
114+
}
115+
116+
@Test
117+
public void testFailureWithGetSingleResult(VertxTestContext context) {
118+
test( context, ReactiveAssertions.assertThrown( HibernateException.class, getSessionFactory()
119+
.withTransaction( s -> s.createNativeQuery( INSERT_SP_SQL ).getSingleResult() ) )
120+
.thenAccept( e -> assertThat( e ).hasMessageContainingAll( "HR000080:", INSERT_SP_SQL ) )
121+
);
122+
}
123+
105124
@Test
106125
public void testInsertStoredProcedure(VertxTestContext context) {
107126
test( context, openSession().thenCompose( session -> session

0 commit comments

Comments
 (0)