Skip to content

Commit dc150db

Browse files
committed
dbTools feature:
improve test and testContainer config, also bugFix
1 parent b6611f3 commit dc150db

3 files changed

Lines changed: 36 additions & 3 deletions

File tree

src/main/java/ir/bigz/springbootreal/dal/DaoRepositoryImpl.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package ir.bigz.springbootreal.dal;
22
import org.hibernate.Session;
3+
import org.hibernate.jpa.QueryHints;
34
import org.springframework.data.domain.Page;
45
import org.springframework.data.domain.PageImpl;
56
import org.springframework.data.domain.Pageable;
@@ -140,7 +141,9 @@ public void clear() {
140141
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
141142
public Stream<T> getAll() {
142143
Session session = entityManager.unwrap(Session.class);
143-
return session.createQuery("from " + daoType.getName()).stream();
144+
return session.createQuery("from " + daoType.getName())
145+
.setHint(QueryHints.HINT_FETCH_SIZE, 50)
146+
.stream();
144147
}
145148

146149
@Override

src/test/groovy/ir/bigz/springbootreal/web/RepositoryTest.groovy

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@ package ir.bigz.springbootreal.web
22

33
import ir.bigz.springbootreal.configuration.DataSourceConfiguration
44
import ir.bigz.springbootreal.configuration.WebConfiguration
5+
import ir.bigz.springbootreal.dal.DaoRepository
6+
import ir.bigz.springbootreal.dal.DaoRepositoryImpl
57
import ir.bigz.springbootreal.dal.UserRepository
68
import ir.bigz.springbootreal.dal.UserRepositoryImpl
9+
import ir.bigz.springbootreal.dao.BaseEntity
710
import ir.bigz.springbootreal.dao.User
11+
import ir.bigz.springbootreal.datagenerator.DataGenerator
812
import org.springframework.beans.factory.annotation.Autowired
913
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
1014
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
@@ -13,13 +17,15 @@ import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfigurat
1317
import org.springframework.boot.test.context.SpringBootTest
1418
import org.springframework.test.context.ContextConfiguration
1519
import org.springframework.transaction.annotation.EnableTransactionManagement
20+
import spock.lang.Shared
1621
import spock.lang.Title
1722

23+
import javax.transaction.Transactional
1824
import java.sql.Timestamp
1925
import java.time.LocalDateTime
2026

2127
@ContextConfiguration(classes = [UserRepositoryImpl.class, User.class,
22-
DataSourceConfiguration.class, WebConfiguration.class])
28+
DataSourceConfiguration.class, WebConfiguration.class, DataGenerator.class])
2329
@Title("Test repository layer")
2430
@SpringBootTest(properties = "spring.profiles.active:test")
2531
@EnableAutoConfiguration(exclude = [DataSourceAutoConfiguration.class,
@@ -44,6 +50,23 @@ class RepositoryTest extends InitTestContainerDB {
4450

4551
}
4652

53+
@Transactional
54+
def "deactivate user with stream data and not throw exception"(){
55+
56+
def countActiveUser = userRepository.getAll().filter(BaseEntity::isActiveStatus).count()
57+
58+
when: "deactivate users"
59+
userRepository.getAll()
60+
.filter(BaseEntity::isActiveStatus).peek(user -> { user.setActiveStatus(false) }).count()
61+
62+
then: "after deactivate user, count active must be zero"
63+
def count = userRepository.getAll().filter(BaseEntity::isActiveStatus).count()
64+
count == 0
65+
countActiveUser != count
66+
67+
}
68+
69+
4770
def "update user db"(){
4871

4972
given: "create fake use"
@@ -66,8 +89,14 @@ class RepositoryTest extends InitTestContainerDB {
6689

6790
}
6891

92+
//exec once before class run test
93+
def setupSpec(){}
94+
6995
//before each test this command run
70-
def setup(){}
96+
def setup(){
97+
DataGenerator dataGenerator = new DataGenerator(userRepository)
98+
dataGenerator.run()
99+
}
71100

72101
//after each test this command run
73102
def cleanup(){
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
testcontainers.reuse.enable=true

0 commit comments

Comments
 (0)