Skip to content

Commit ccf1f4e

Browse files
abialaspivovarit
authored andcommitted
BAEL-1412 add java 8 spring data features (eugenp#3306)
1 parent 23f7f65 commit ccf1f4e

File tree

2 files changed

+112
-1
lines changed

2 files changed

+112
-1
lines changed

spring-boot/src/main/java/org/baeldung/repository/UserRepository.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,23 @@
22

33
import org.baeldung.model.User;
44
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.scheduling.annotation.Async;
56
import org.springframework.stereotype.Repository;
67

8+
import java.util.Optional;
9+
import java.util.concurrent.CompletableFuture;
10+
import java.util.stream.Stream;
11+
712
@Repository("userRepository")
813
public interface UserRepository extends JpaRepository<User, Integer> {
9-
public int countByStatus(int status);
14+
15+
int countByStatus(int status);
16+
17+
Optional<User> findOneByName(String name);
18+
19+
Stream<User> findAllByName(String name);
20+
21+
@Async
22+
CompletableFuture<User> findOneByStatus(Integer status);
23+
1024
}
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package org.baeldung.repository;
2+
3+
import org.baeldung.boot.Application;
4+
import org.baeldung.model.User;
5+
import org.junit.After;
6+
import org.junit.Test;
7+
import org.junit.runner.RunWith;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.boot.test.context.SpringBootTest;
10+
import org.springframework.test.context.junit4.SpringRunner;
11+
import org.springframework.transaction.annotation.Transactional;
12+
13+
import java.util.Optional;
14+
import java.util.concurrent.CompletableFuture;
15+
import java.util.concurrent.ExecutionException;
16+
import java.util.stream.Stream;
17+
18+
import static org.hamcrest.CoreMatchers.equalTo;
19+
import static org.hamcrest.MatcherAssert.assertThat;
20+
21+
/**
22+
* Created by adam.
23+
*/
24+
@RunWith(SpringRunner.class)
25+
@SpringBootTest(classes = Application.class)
26+
public class UserRepositoryTest {
27+
28+
private final String USER_NAME_ADAM = "Adam";
29+
private final Integer ACTIVE_STATUS = 1;
30+
31+
@Autowired
32+
private UserRepository userRepository;
33+
34+
@Test
35+
public void shouldReturnEmptyOptionalWhenSearchByNameInEmptyDB() {
36+
Optional<User> foundUser = userRepository.findOneByName(USER_NAME_ADAM);
37+
38+
assertThat(foundUser.isPresent(), equalTo(false));
39+
}
40+
41+
@Test
42+
public void shouldReturnOptionalWithPresentUserWhenExistsWithGivenName() {
43+
User user = new User();
44+
user.setName(USER_NAME_ADAM);
45+
userRepository.save(user);
46+
47+
Optional<User> foundUser = userRepository.findOneByName(USER_NAME_ADAM);
48+
49+
assertThat(foundUser.isPresent(), equalTo(true));
50+
assertThat(foundUser.get()
51+
.getName(), equalTo(USER_NAME_ADAM));
52+
}
53+
54+
@Test
55+
@Transactional
56+
public void shouldReturnStreamOfUsersWithNameWhenExistWithSameGivenName() {
57+
User user1 = new User();
58+
user1.setName(USER_NAME_ADAM);
59+
userRepository.save(user1);
60+
61+
User user2 = new User();
62+
user2.setName(USER_NAME_ADAM);
63+
userRepository.save(user2);
64+
65+
User user3 = new User();
66+
user3.setName(USER_NAME_ADAM);
67+
userRepository.save(user3);
68+
69+
User user4 = new User();
70+
user4.setName("SAMPLE");
71+
userRepository.save(user4);
72+
73+
try (Stream<User> foundUsersStream = userRepository.findAllByName(USER_NAME_ADAM)) {
74+
assertThat(foundUsersStream.count(), equalTo(3l));
75+
}
76+
}
77+
78+
@Test
79+
public void shouldReturnUserWithGivenStatusAsync() throws ExecutionException, InterruptedException {
80+
User user = new User();
81+
user.setName(USER_NAME_ADAM);
82+
user.setStatus(ACTIVE_STATUS);
83+
userRepository.save(user);
84+
85+
CompletableFuture<User> userByStatus = userRepository.findOneByStatus(ACTIVE_STATUS);
86+
87+
assertThat(userByStatus.get()
88+
.getName(), equalTo(USER_NAME_ADAM));
89+
90+
}
91+
92+
@After
93+
public void cleanUp() {
94+
userRepository.deleteAll();
95+
}
96+
97+
}

0 commit comments

Comments
 (0)