-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #253 from Yanabada/feature/214
채팅 도메인 테스트 코드 작성 및 테스트 코드 유틸리티 클래스 구현
- Loading branch information
Showing
9 changed files
with
519 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
65 changes: 65 additions & 0 deletions
65
src/test/java/kr/co/fastcampus/yanabada/common/utils/ApiTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
package kr.co.fastcampus.yanabada.common.utils; | ||
|
||
import static kr.co.fastcampus.yanabada.common.utils.TestUtils.createAccommodation; | ||
import static kr.co.fastcampus.yanabada.common.utils.TestUtils.createAccommodationOption; | ||
import static kr.co.fastcampus.yanabada.common.utils.TestUtils.createBuyer; | ||
import static kr.co.fastcampus.yanabada.common.utils.TestUtils.createOrder; | ||
import static kr.co.fastcampus.yanabada.common.utils.TestUtils.createProduct; | ||
import static kr.co.fastcampus.yanabada.common.utils.TestUtils.createRoom; | ||
import static kr.co.fastcampus.yanabada.common.utils.TestUtils.createRoomOption; | ||
import static kr.co.fastcampus.yanabada.common.utils.TestUtils.createSeller; | ||
|
||
import kr.co.fastcampus.yanabada.domain.accommodation.entity.Accommodation; | ||
import kr.co.fastcampus.yanabada.domain.accommodation.entity.Room; | ||
import kr.co.fastcampus.yanabada.domain.accommodation.repository.AccommodationOptionRepository; | ||
import kr.co.fastcampus.yanabada.domain.accommodation.repository.AccommodationRepository; | ||
import kr.co.fastcampus.yanabada.domain.accommodation.repository.RoomOptionRepository; | ||
import kr.co.fastcampus.yanabada.domain.accommodation.repository.RoomRepository; | ||
import kr.co.fastcampus.yanabada.domain.member.entity.Member; | ||
import kr.co.fastcampus.yanabada.domain.member.repository.MemberRepository; | ||
import kr.co.fastcampus.yanabada.domain.order.entity.Order; | ||
import kr.co.fastcampus.yanabada.domain.order.repository.OrderRepository; | ||
import kr.co.fastcampus.yanabada.domain.product.repository.ProductRepository; | ||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.extension.ExtendWith; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
|
||
@ExtendWith(DatabaseClearExtension.class) | ||
@SpringBootTest | ||
public abstract class ApiTest { | ||
|
||
@Autowired | ||
private MemberRepository memberRepository; | ||
|
||
@Autowired | ||
private AccommodationRepository accommodationRepository; | ||
|
||
@Autowired | ||
private AccommodationOptionRepository accommodationOptionRepository; | ||
|
||
@Autowired | ||
private RoomRepository roomRepository; | ||
|
||
@Autowired | ||
private RoomOptionRepository roomOptionRepository; | ||
|
||
@Autowired | ||
private OrderRepository orderRepository; | ||
|
||
@Autowired | ||
private ProductRepository productRepository; | ||
|
||
@BeforeEach | ||
void setup() { | ||
Accommodation accommodation = accommodationRepository.save(createAccommodation()); | ||
accommodationOptionRepository.save(createAccommodationOption(accommodation)); | ||
Room room = roomRepository.save(createRoom(accommodation)); | ||
roomOptionRepository.save(createRoomOption(room)); | ||
Member seller = memberRepository.save(createSeller()); | ||
memberRepository.save(createBuyer()); | ||
Order order = orderRepository.save(createOrder(room, seller)); | ||
productRepository.save(createProduct(order)); | ||
|
||
} | ||
} |
45 changes: 45 additions & 0 deletions
45
src/test/java/kr/co/fastcampus/yanabada/common/utils/DatabaseCleaner.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package kr.co.fastcampus.yanabada.common.utils; | ||
|
||
import jakarta.annotation.PostConstruct; | ||
import jakarta.persistence.EntityManager; | ||
import jakarta.persistence.PersistenceContext; | ||
import java.util.ArrayList; | ||
import java.util.List; | ||
import org.springframework.stereotype.Component; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
@Component | ||
public class DatabaseCleaner { | ||
|
||
private final List<String> tableNames = new ArrayList<>(); | ||
|
||
@PersistenceContext | ||
private EntityManager entityManager; | ||
|
||
@SuppressWarnings("unchecked") | ||
@PostConstruct | ||
private void findDatabaseTableNames() { | ||
List<Object[]> tableInfos = entityManager.createNativeQuery("SHOW TABLES").getResultList(); | ||
for (Object[] tableInfo : tableInfos) { | ||
String tableName = (String) tableInfo[0]; | ||
tableNames.add(tableName); | ||
} | ||
} | ||
|
||
private void truncate() { | ||
entityManager.createNativeQuery(String.format("SET FOREIGN_KEY_CHECKS %d", 0)) | ||
.executeUpdate(); | ||
for (String tableName : tableNames) { | ||
entityManager.createNativeQuery(String.format("TRUNCATE TABLE %s", tableName)) | ||
.executeUpdate(); | ||
} | ||
entityManager.createNativeQuery(String.format("SET FOREIGN_KEY_CHECKS %d", 1)) | ||
.executeUpdate(); | ||
} | ||
|
||
@Transactional | ||
public void clear() { | ||
entityManager.clear(); | ||
truncate(); | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
src/test/java/kr/co/fastcampus/yanabada/common/utils/DatabaseClearExtension.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package kr.co.fastcampus.yanabada.common.utils; | ||
|
||
import org.junit.jupiter.api.extension.BeforeEachCallback; | ||
import org.junit.jupiter.api.extension.ExtensionContext; | ||
import org.springframework.test.context.junit.jupiter.SpringExtension; | ||
|
||
public class DatabaseClearExtension implements BeforeEachCallback { | ||
|
||
@Override | ||
public void beforeEach(ExtensionContext context) { | ||
DatabaseCleaner databaseCleaner = getDataCleaner(context); | ||
databaseCleaner.clear(); | ||
} | ||
|
||
private DatabaseCleaner getDataCleaner(ExtensionContext extensionContext) { | ||
return SpringExtension.getApplicationContext(extensionContext) | ||
.getBean(DatabaseCleaner.class); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.