Skip to content

Commit 3065160

Browse files
committed
DATAJDBC-172 - Added tests.
Added test for too many results. Removed FOR UPDATE clause from test statements.
1 parent 6f64990 commit 3065160

File tree

1 file changed

+43
-11
lines changed

1 file changed

+43
-11
lines changed

src/test/java/org/springframework/data/jdbc/repository/query/QueryAnnotationHsqlIntegrationTests.java

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.springframework.context.annotation.Bean;
2929
import org.springframework.context.annotation.Configuration;
3030
import org.springframework.context.annotation.Import;
31+
import org.springframework.dao.DataAccessException;
3132
import org.springframework.data.annotation.Id;
3233
import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories;
3334
import org.springframework.data.jdbc.testing.TestConfiguration;
@@ -38,6 +39,8 @@
3839
import org.springframework.test.context.junit4.rules.SpringMethodRule;
3940
import org.springframework.transaction.annotation.Transactional;
4041

42+
import static org.assertj.core.api.Assertions.*;
43+
4144
/**
4245
* Tests the execution of queries from {@link Query} annotations on repository methods.
4346
*
@@ -97,10 +100,9 @@ public void executeCustomQueryWithReturnTypeIsOptional() {
97100
@Test // DATAJDBC-172
98101
public void executeCustomQueryWithReturnTypeIsOptionalWhenEntityNotFound() {
99102

100-
DummyEntity dummyEntity = dummyEntity("a");
101-
repository.save(dummyEntity);
103+
repository.save(dummyEntity("a"));
102104

103-
Optional<DummyEntity> entity = repository.findByIdWithReturnTypeIsOptional(9999L);
105+
Optional<DummyEntity> entity = repository.findByNameAsOptional("x");
104106

105107
assertThat(entity).isNotPresent();
106108

@@ -109,16 +111,46 @@ public void executeCustomQueryWithReturnTypeIsOptionalWhenEntityNotFound() {
109111
@Test // DATAJDBC-172
110112
public void executeCustomQueryWithReturnTypeIsEntity() {
111113

112-
DummyEntity dummyEntity = dummyEntity("a");
113-
repository.save(dummyEntity);
114+
repository.save(dummyEntity("a"));
114115

115-
DummyEntity entity = repository.findByIdWithReturnTypeIsEntity(dummyEntity.id);
116+
DummyEntity entity = repository.findByNameAsEntity("a");
116117

117118
assertThat(entity).isNotNull();
118119
assertThat(entity.name).isEqualTo("a");
119120

120121
}
121122

123+
@Test // DATAJDBC-172
124+
public void executeCustomQueryWithReturnTypeIsEntityWhenEntityNotFound() {
125+
126+
repository.save(dummyEntity("a"));
127+
128+
DummyEntity entity = repository.findByNameAsEntity("x");
129+
130+
assertThat(entity).isNull();
131+
132+
}
133+
134+
@Test // DATAJDBC-172
135+
public void executeCustomQueryWithReturnTypeIsEntityWhenEntityDuplicateResult() {
136+
137+
repository.save(dummyEntity("a"));
138+
repository.save(dummyEntity("a"));
139+
140+
assertThatExceptionOfType(DataAccessException.class) //
141+
.isThrownBy(() -> repository.findByNameAsEntity("a"));
142+
}
143+
144+
@Test // DATAJDBC-172
145+
public void executeCustomQueryWithReturnTypeIsOptionalWhenEntityDuplicateResult() {
146+
147+
repository.save(dummyEntity("a"));
148+
repository.save(dummyEntity("a"));
149+
150+
assertThatExceptionOfType(DataAccessException.class) //
151+
.isThrownBy(() -> repository.findByNameAsOptional("a"));
152+
}
153+
122154
@Test // DATAJDBC-172
123155
public void executeCustomQueryWithReturnTypeIsStream() {
124156

@@ -165,12 +197,12 @@ private interface DummyEntityRepository extends CrudRepository<DummyEntity, Long
165197

166198
@Query("SELECT * FROM DUMMYENTITY WHERE name < :upper and name > :lower")
167199
List<DummyEntity> findByNamedRangeWithNamedParameter(@Param("lower") String lower, @Param("upper") String upper);
168-
169-
@Query("SELECT * FROM DUMMYENTITY WHERE id = :id FOR UPDATE")
170-
Optional<DummyEntity> findByIdWithReturnTypeIsOptional(@Param("id") Long id);
171200

172-
@Query("SELECT * FROM DUMMYENTITY WHERE id = :id FOR UPDATE")
173-
DummyEntity findByIdWithReturnTypeIsEntity(@Param("id") Long id);
201+
@Query("SELECT * FROM DUMMYENTITY WHERE name = :name")
202+
Optional<DummyEntity> findByNameAsOptional(@Param("name") String name);
203+
204+
@Query("SELECT * FROM DUMMYENTITY WHERE name = :name")
205+
DummyEntity findByNameAsEntity(@Param("name") String name);
174206

175207
@Query("SELECT * FROM DUMMYENTITY")
176208
Stream<DummyEntity> findAllWithReturnTypeIsStream();

0 commit comments

Comments
 (0)