@@ -2,9 +2,13 @@ package ir.bigz.springbootreal.web
22
33import ir.bigz.springbootreal.configuration.DataSourceConfiguration
44import ir.bigz.springbootreal.configuration.WebConfiguration
5+ import ir.bigz.springbootreal.dal.DaoRepository
6+ import ir.bigz.springbootreal.dal.DaoRepositoryImpl
57import ir.bigz.springbootreal.dal.UserRepository
68import ir.bigz.springbootreal.dal.UserRepositoryImpl
9+ import ir.bigz.springbootreal.dao.BaseEntity
710import ir.bigz.springbootreal.dao.User
11+ import ir.bigz.springbootreal.datagenerator.DataGenerator
812import org.springframework.beans.factory.annotation.Autowired
913import org.springframework.boot.autoconfigure.EnableAutoConfiguration
1014import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
@@ -13,13 +17,15 @@ import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfigurat
1317import org.springframework.boot.test.context.SpringBootTest
1418import org.springframework.test.context.ContextConfiguration
1519import org.springframework.transaction.annotation.EnableTransactionManagement
20+ import spock.lang.Shared
1621import spock.lang.Title
1722
23+ import javax.transaction.Transactional
1824import java.sql.Timestamp
1925import 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 (){
0 commit comments