패스트캠퍼스
패스트캠퍼스 환급챌린지 31일차 : 9개 도메인 프로젝트로 끝내는 백엔드 웹 개발 (Java/Spring) 초격차 패키지 Online 강의 후기
이태우(1990년)
2025. 4. 4. 22:43
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
공부 시작 시각 인증

수강 인증 사진

DatabaseCleanUp.java
package org.fastcampus.acceptance.utils;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.Table;
import jakarta.transaction.Transactional;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
@Profile("test")
@Component
@Slf4j
public class DatabaseCleanUp implements InitializingBean {
@PersistenceContext
private EntityManager entityManager;
private List<String> tableNames;
private List<String> notGeneratedIdEntityTableNames;
@Override
public void afterPropertiesSet() {
tableNames = entityManager.getMetamodel().getEntities()
.stream()
.filter(entity -> entity.getJavaType().getAnnotation(Entity.class) != null)
.map(entity -> entity.getJavaType().getAnnotation(Table.class).name())
.toList();
notGeneratedIdEntityTableNames = List.of("community_user_relation", "community_like");
}
@Transactional
public void execute() {
entityManager.flush();
entityManager.createNativeQuery("SET REFERENTIAL_INTEGRITY FALSE").executeUpdate();
for (String tableName: tableNames) {
entityManager.createNativeQuery("TRUNCATE TABLE " + tableName).executeUpdate();
if (!notGeneratedIdEntityTableNames.contains(tableName)) {
entityManager.createNativeQuery("ALTER TABLE " + tableName + " ALTER COLUMN ID RESTART WITH 1").executeUpdate();
}
}
entityManager.createNativeQuery("SET REFERENTIAL_INTEGRITY TRUE").executeUpdate();
}
}
UserAcceptanceSteps.java
package org.fastcampus.acceptance.steps;
import io.restassured.RestAssured;
import io.restassured.response.ExtractableResponse;
import io.restassured.response.Response;
import org.fastcampus.user.application.dto.CreateUserRequestDto;
import org.fastcampus.user.application.dto.FollowUserRequestDto;
import org.springframework.http.MediaType;
public class UserAcceptanceSteps {
public static ExtractableResponse<Response> createUser(CreateUserRequestDto dto) {
return RestAssured
.given()
.body(dto)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.when()
.post("/user")
.then()
.extract();
}
public static ExtractableResponse<Response> followUser(FollowUserRequestDto dto) {
return RestAssured
.given()
.body(dto)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.when()
.post("/relation/follow")
.then()
.extract();
}
}
DataLoader.java
package org.fastcampus.acceptance.utils;
import org.fastcampus.user.application.dto.CreateUserRequestDto;
import org.fastcampus.user.application.dto.FollowUserRequestDto;
import org.springframework.stereotype.Component;
import static org.fastcampus.acceptance.steps.UserAcceptanceSteps.*;
@Component
public class DataLoader {
public void loadData() {
CreateUserRequestDto dto = new CreateUserRequestDto("test user", "");
createUser(dto);
createUser(dto);
createUser(dto);
followUser(new FollowUserRequestDto(1L, 2L));
followUser(new FollowUserRequestDto(1L, 3L));
}
}
AcceptanceTestTemplate.java
package org.fastcampus.acceptance.utils;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.test.context.ActiveProfiles;
@ActiveProfiles("test")
@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
public class AcceptanceTestTemplate {
@Autowired
private DatabaseCleanUp cleanUp;
@Autowired
private DataLoader loader;
@BeforeEach
public void init() {
cleanUp.execute();
loader.loadData();
}
}
학습 인증샷

학습 종료 시각 인증
