1+ package com .baeldung .derivedquery .repository ;
2+
3+ import com .baeldung .Application ;
4+ import com .baeldung .derivedquery .entity .User ;
5+ import com .baeldung .derivedquery .repository .UserRepository ;
6+ import java .time .ZonedDateTime ;
7+ import java .util .Arrays ;
8+ import java .util .List ;
9+ import org .junit .After ;
10+ import org .junit .Before ;
11+ import org .junit .Test ;
12+ import org .junit .runner .RunWith ;
13+ import org .springframework .beans .factory .annotation .Autowired ;
14+ import org .springframework .boot .test .context .SpringBootTest ;
15+ import org .springframework .test .context .junit4 .SpringRunner ;
16+
17+ import static org .junit .Assert .assertEquals ;
18+
19+ @ RunWith (SpringRunner .class )
20+ @ SpringBootTest (classes = Application .class )
21+ public class UserRepositoryTest {
22+
23+ private static final String USER_NAME_ADAM = "Adam" ;
24+ private static final String USER_NAME_EVE = "Eve" ;
25+ private static final ZonedDateTime BIRTHDATE = ZonedDateTime .now ();
26+
27+ @ Autowired
28+ private UserRepository userRepository ;
29+
30+ @ Before
31+ public void setUp () {
32+
33+ User user1 = new User (USER_NAME_ADAM , 25 , BIRTHDATE , true );
34+ User user2 = new User (USER_NAME_ADAM , 20 , BIRTHDATE , false );
35+ User user3 = new User (USER_NAME_EVE , 20 , BIRTHDATE , true );
36+ User user4 = new User (null , 30 , BIRTHDATE , false );
37+
38+ userRepository .saveAll (Arrays .asList (user1 , user2 , user3 , user4 ));
39+ }
40+
41+ @ After
42+ public void tearDown () {
43+
44+ userRepository .deleteAll ();
45+ }
46+
47+ @ Test
48+ public void whenFindByName_thenReturnsCorrectResult () {
49+
50+ assertEquals (2 , userRepository .findByName (USER_NAME_ADAM ).size ());
51+ }
52+
53+ @ Test
54+ public void whenFindByNameIsNull_thenReturnsCorrectResult () {
55+
56+ assertEquals (1 , userRepository .findByNameIsNull ().size ());
57+ }
58+
59+ @ Test
60+ public void whenFindByNameNot_thenReturnsCorrectResult () {
61+
62+ assertEquals (USER_NAME_EVE , userRepository .findByNameNot (USER_NAME_ADAM ).get (0 ).getName ());
63+ }
64+
65+ @ Test
66+ public void whenFindByNameStartingWith_thenReturnsCorrectResult () {
67+
68+ assertEquals (2 , userRepository .findByNameStartingWith ("A" ).size ());
69+ }
70+
71+ @ Test
72+ public void whenFindByNameEndingWith_thenReturnsCorrectResult () {
73+
74+ assertEquals (1 , userRepository .findByNameEndingWith ("e" ).size ());
75+ }
76+
77+ @ Test
78+ public void whenByNameContaining_thenReturnsCorrectResult () {
79+
80+ assertEquals (1 , userRepository .findByNameContaining ("v" ).size ());
81+ }
82+
83+
84+ @ Test
85+ public void whenByNameLike_thenReturnsCorrectResult () {
86+
87+ assertEquals (2 , userRepository .findByNameEndingWith ("%d%m" ).size ());
88+ }
89+
90+ @ Test
91+ public void whenByAgeLessThan_thenReturnsCorrectResult () {
92+
93+ assertEquals (2 , userRepository .findByAgeLessThan (25 ).size ());
94+ }
95+
96+
97+ @ Test
98+ public void whenByAgeLessThanEqual_thenReturnsCorrectResult () {
99+
100+ assertEquals (3 , userRepository .findByAgeLessThanEqual (25 ).size ());
101+ }
102+
103+ @ Test
104+ public void whenByAgeGreaterThan_thenReturnsCorrectResult () {
105+
106+ assertEquals (1 , userRepository .findByAgeGreaterThan (25 ).size ());
107+ }
108+
109+ @ Test
110+ public void whenByAgeGreaterThanEqual_thenReturnsCorrectResult () {
111+
112+ assertEquals (2 , userRepository .findByAgeGreaterThanEqual (25 ).size ());
113+ }
114+
115+ @ Test
116+ public void whenByAgeBetween_thenReturnsCorrectResult () {
117+
118+ assertEquals (4 , userRepository .findByAgeBetween (20 , 30 ).size ());
119+ }
120+
121+ @ Test
122+ public void whenByBirthDateAfter_thenReturnsCorrectResult () {
123+
124+ final ZonedDateTime yesterday = BIRTHDATE .minusDays (1 );
125+ assertEquals (4 , userRepository .findByBirthDateAfter (yesterday ).size ());
126+ }
127+
128+ @ Test
129+ public void whenByBirthDateBefore_thenReturnsCorrectResult () {
130+
131+ final ZonedDateTime yesterday = BIRTHDATE .minusDays (1 );
132+ assertEquals (0 , userRepository .findByBirthDateBefore (yesterday ).size ());
133+ }
134+
135+ @ Test
136+ public void whenByActiveTrue_thenReturnsCorrectResult () {
137+
138+ assertEquals (2 , userRepository .findByActiveTrue ().size ());
139+ }
140+
141+ @ Test
142+ public void whenByActiveFalse_thenReturnsCorrectResult () {
143+
144+ assertEquals (2 , userRepository .findByActiveFalse ().size ());
145+ }
146+
147+
148+ @ Test
149+ public void whenByAgeIn_thenReturnsCorrectResult () {
150+
151+ final List <Integer > ages = Arrays .asList (20 , 25 );
152+ assertEquals (3 , userRepository .findByAgeIn (ages ).size ());
153+ }
154+
155+ @ Test
156+ public void whenByNameOrBirthDate () {
157+
158+ assertEquals (4 , userRepository .findByNameOrBirthDate (USER_NAME_ADAM , BIRTHDATE ).size ());
159+ }
160+
161+ @ Test
162+ public void whenByNameOrBirthDateAndActive () {
163+
164+ assertEquals (3 , userRepository .findByNameOrBirthDateAndActive (USER_NAME_ADAM , BIRTHDATE , false ).size ());
165+ }
166+
167+ @ Test
168+ public void whenByNameOrderByName () {
169+
170+ assertEquals (2 , userRepository .findByNameOrderByName (USER_NAME_ADAM ).size ());
171+ }
172+ }
0 commit comments