Skip to content

Commit 512d03e

Browse files
Finished creating tests for HSQL
1 parent 0ad7f77 commit 512d03e

3 files changed

Lines changed: 274 additions & 7 deletions

File tree

spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/HsqlTest.java

Lines changed: 229 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@
1616
package software.xdev.spring.data.eclipse.store.integration.isolated.tests.query.hsql;
1717

1818
import static org.junit.jupiter.api.Assertions.assertEquals;
19+
import static org.junit.jupiter.api.Assertions.assertNotNull;
1920

21+
import java.time.LocalDate;
2022
import java.util.Arrays;
2123
import java.util.Calendar;
2224
import java.util.List;
2325
import java.util.stream.Stream;
2426

25-
import org.junit.jupiter.api.Test;
2627
import org.junit.jupiter.params.ParameterizedTest;
2728
import org.junit.jupiter.params.provider.Arguments;
2829
import org.junit.jupiter.params.provider.MethodSource;
@@ -39,7 +40,232 @@ class HsqlTest
3940
@Autowired
4041
private MyEntityRepository repository;
4142

42-
@Autowired
43-
private HsqlTestConfiguration configuration;
43+
@ParameterizedTest
44+
@MethodSource("provideTestData")
45+
void testFindAllEntities(final List<MyEntity> entities)
46+
{
47+
this.repository.saveAll(entities);
48+
final List<MyEntity> result = this.repository.findAllEntities();
49+
assertEquals(entities.size(), result.size());
50+
}
51+
52+
@ParameterizedTest
53+
@MethodSource("provideTestData")
54+
void testFindByName(final List<MyEntity> entities)
55+
{
56+
this.repository.saveAll(entities);
57+
final List<MyEntity> result = this.repository.findByName("John");
58+
assertEquals(1, result.size());
59+
assertEquals("John", result.get(0).getName());
60+
}
61+
62+
@ParameterizedTest
63+
@MethodSource("provideTestData")
64+
void testFindByNameAndAgeGreaterThan(final List<MyEntity> entities)
65+
{
66+
this.repository.saveAll(entities);
67+
final List<MyEntity> result = this.repository.findByNameAndAgeGreaterThan("John", 25);
68+
assertEquals(1, result.size());
69+
assertEquals("John", result.get(0).getName());
70+
}
71+
72+
@ParameterizedTest
73+
@MethodSource("provideTestData")
74+
void testFindAllOrderByAgeDesc(final List<MyEntity> entities)
75+
{
76+
this.repository.saveAll(entities);
77+
final List<MyEntity> result = this.repository.findAllOrderByAgeDesc();
78+
assertEquals(entities.size(), result.size());
79+
assertEquals(40, result.get(0).getAge());
80+
}
81+
82+
@ParameterizedTest
83+
@MethodSource("provideTestData")
84+
void testFindTop5ByOrderByAgeDesc(final List<MyEntity> entities)
85+
{
86+
this.repository.saveAll(entities);
87+
final List<MyEntity> result = this.repository.findTop5ByOrderByAgeDesc();
88+
assertEquals(Math.min(5, entities.size()), result.size());
89+
}
90+
91+
@ParameterizedTest
92+
@MethodSource("provideTestData")
93+
void testFindDistinctNames(final List<MyEntity> entities)
94+
{
95+
this.repository.saveAll(entities);
96+
final List<String> result = this.repository.findDistinctNames();
97+
assertEquals(entities.stream().map(MyEntity::getName).distinct().count(), result.size());
98+
}
99+
100+
@ParameterizedTest
101+
@MethodSource("provideTestDataWithOtherEntity")
102+
void testFindByOtherEntityId(final List<MyEntity> entities, final OtherEntity otherEntity)
103+
{
104+
this.repository.saveAll(entities);
105+
final List<MyEntity> result = this.repository.findByOtherEntityId(otherEntity.getId());
106+
assertEquals(entities.stream()
107+
.filter(e -> e.getOtherEntity() != null && e.getOtherEntity().getId().equals(otherEntity.getId()))
108+
.count(), result.size());
109+
}
110+
111+
@ParameterizedTest
112+
@MethodSource("provideTestData")
113+
void testCountByName(final List<MyEntity> entities)
114+
{
115+
this.repository.saveAll(entities);
116+
final List<Object[]> result = this.repository.countByName();
117+
assertNotNull(result);
118+
}
119+
120+
@ParameterizedTest
121+
@MethodSource("provideTestData")
122+
void testCountByNameHavingMoreThan(final List<MyEntity> entities)
123+
{
124+
this.repository.saveAll(entities);
125+
final List<Object[]> result = this.repository.countByNameHavingMoreThan(1);
126+
assertNotNull(result);
127+
}
128+
129+
@ParameterizedTest
130+
@MethodSource("provideTestData")
131+
void testFindEntityWithMaxAge(final List<MyEntity> entities)
132+
{
133+
this.repository.saveAll(entities);
134+
final MyEntity result = this.repository.findEntityWithMaxAge();
135+
assertEquals(40, result.getAge());
136+
}
137+
138+
@ParameterizedTest
139+
@MethodSource("provideTestData")
140+
void testFindByNameIn(final List<MyEntity> entities)
141+
{
142+
this.repository.saveAll(entities);
143+
final List<MyEntity> result = this.repository.findByNameIn(Arrays.asList("John", "Jane"));
144+
assertEquals(2, result.size());
145+
}
146+
147+
@ParameterizedTest
148+
@MethodSource("provideTestData")
149+
void testFindByNameContaining(final List<MyEntity> entities)
150+
{
151+
this.repository.saveAll(entities);
152+
final List<MyEntity> result = this.repository.findByNameContaining("Jo");
153+
assertEquals(1, result.size());
154+
}
155+
156+
@ParameterizedTest
157+
@MethodSource("provideTestData")
158+
void testFindByNameNative(final List<MyEntity> entities)
159+
{
160+
this.repository.saveAll(entities);
161+
final List<MyEntity> result = this.repository.findByNameNative("John");
162+
assertEquals(1, result.size());
163+
}
164+
165+
@ParameterizedTest
166+
@MethodSource("provideTestData")
167+
void testFindByCreationDateAfter(final List<MyEntity> entities)
168+
{
169+
this.repository.saveAll(entities);
170+
final List<MyEntity> result =
171+
this.repository.findByCreationDateAfter(LocalDate.now().minusDays(1));
172+
assertEquals(entities.size(), result.size());
173+
}
174+
175+
@ParameterizedTest
176+
@MethodSource("provideTestData")
177+
void testFindByAgeBetween(final List<MyEntity> entities)
178+
{
179+
this.repository.saveAll(entities);
180+
final List<MyEntity> result = this.repository.findByAgeBetween(20, 30);
181+
assertEquals(2, result.size());
182+
}
183+
184+
@ParameterizedTest
185+
@MethodSource("provideTestData")
186+
void testFindAllActive(final List<MyEntity> entities)
187+
{
188+
this.repository.saveAll(entities);
189+
final List<MyEntity> result = this.repository.findAllActive();
190+
assertEquals(entities.stream().filter(MyEntity::isActive).count(), result.size());
191+
}
192+
193+
@ParameterizedTest
194+
@MethodSource("provideTestData")
195+
void testFindWhereOtherEntityIsNull(final List<MyEntity> entities)
196+
{
197+
this.repository.saveAll(entities);
198+
final List<MyEntity> result = this.repository.findWhereOtherEntityIsNull();
199+
assertEquals(entities.stream().filter(e -> e.getOtherEntity() == null).count(), result.size());
200+
}
201+
202+
@ParameterizedTest
203+
@MethodSource("provideTestDataWithOtherEntity")
204+
void testFindWhereOtherEntityIsNotNull(final List<MyEntity> entities)
205+
{
206+
this.repository.saveAll(entities);
207+
final List<MyEntity> result = this.repository.findWhereOtherEntityIsNotNull();
208+
assertEquals(entities.stream().filter(e -> e.getOtherEntity() != null).count(), result.size());
209+
}
210+
//
211+
// @ParameterizedTest
212+
// @MethodSource("provideTestData")
213+
// void testFindAllAsDTO(List<MyEntity> entities) {
214+
// repository.saveAll(entities);
215+
// List<MyEntityDTO> result = repository.findAllAsDTO();
216+
// assertEquals(entities.size(), result.size());
217+
// }
218+
219+
@ParameterizedTest
220+
@MethodSource("provideTestData")
221+
void testFindByCreationYear(final List<MyEntity> entities)
222+
{
223+
this.repository.saveAll(entities);
224+
final List<MyEntity> result = this.repository.findByCreationYear(Calendar.getInstance().get(Calendar.YEAR));
225+
assertEquals(entities.size(), result.size());
226+
}
227+
228+
private static Stream<Arguments> provideTestData()
229+
{
230+
return Stream.of(
231+
Arguments.of(Arrays.asList(
232+
createMyEntity("John", 30, true, null),
233+
createMyEntity("Jane", 25, false, null),
234+
createMyEntity("Doe", 40, true, null)
235+
)),
236+
Arguments.of(Arrays.asList(
237+
createMyEntity("Alice", 22, true, null),
238+
createMyEntity("Bob", 28, false, null),
239+
createMyEntity("Charlie", 35, true, null)
240+
))
241+
);
242+
}
243+
244+
private static Stream<Arguments> provideTestDataWithOtherEntity()
245+
{
246+
final OtherEntity otherEntity = new OtherEntity();
247+
otherEntity.setDescription("Test OtherEntity");
248+
return Stream.of(
249+
Arguments.of(Arrays.asList(
250+
createMyEntity("John", 30, true, otherEntity),
251+
createMyEntity("Jane", 25, false, null),
252+
createMyEntity("Doe", 40, true, otherEntity)
253+
), otherEntity)
254+
);
255+
}
256+
257+
private static MyEntity createMyEntity(
258+
final String name,
259+
final int age,
260+
final boolean active,
261+
final OtherEntity otherEntity)
262+
{
263+
final MyEntity entity = new MyEntity();
264+
entity.setName(name);
265+
entity.setAge(age);
266+
entity.setCreationDate(LocalDate.now());
267+
entity.setActive(active);
268+
entity.setOtherEntity(otherEntity);
269+
return entity;
44270
}
45271
}

spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/MyEntity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class MyEntity
2121

2222
private boolean active;
2323

24-
private Object otherEntity;
24+
private OtherEntity otherEntity;
2525

2626
public MyEntity()
2727
{
@@ -33,7 +33,7 @@ public MyEntity(
3333
final int age,
3434
final LocalDate creationDate,
3535
final boolean active,
36-
final Object otherEntity)
36+
final OtherEntity otherEntity)
3737
{
3838
this.id = id;
3939
this.name = name;
@@ -93,12 +93,12 @@ public void setActive(final boolean active)
9393
this.active = active;
9494
}
9595

96-
public Object getOtherEntity()
96+
public OtherEntity getOtherEntity()
9797
{
9898
return this.otherEntity;
9999
}
100100

101-
public void setOtherEntity(final Object otherEntity)
101+
public void setOtherEntity(final OtherEntity otherEntity)
102102
{
103103
this.otherEntity = otherEntity;
104104
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package software.xdev.spring.data.eclipse.store.integration.isolated.tests.query.hsql;
2+
3+
import jakarta.persistence.GeneratedValue;
4+
import jakarta.persistence.GenerationType;
5+
import jakarta.persistence.Id;
6+
7+
8+
public class OtherEntity
9+
{
10+
@Id
11+
@GeneratedValue(strategy = GenerationType.AUTO)
12+
private Long id;
13+
14+
private String description;
15+
16+
public OtherEntity(final Long id, final String description)
17+
{
18+
this.id = id;
19+
this.description = description;
20+
}
21+
22+
public OtherEntity()
23+
{
24+
}
25+
26+
public String getDescription()
27+
{
28+
return this.description;
29+
}
30+
31+
public void setDescription(final String description)
32+
{
33+
this.description = description;
34+
}
35+
36+
public Long getId()
37+
{
38+
return this.id;
39+
}
40+
}
41+

0 commit comments

Comments
 (0)