Skip to content

Commit c6f5e0c

Browse files
committed
fix : bugs of testCase, init data
1 parent 71cbe33 commit c6f5e0c

File tree

4 files changed

+45
-66
lines changed

4 files changed

+45
-66
lines changed

src/main/java/com/back/global/init/DevInitData.java

Lines changed: 11 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package com.back.global.init;
22

3+
import com.back.domain.cocktail.entity.Cocktail;
4+
import com.back.domain.cocktail.repository.CocktailRepository;
35
import com.back.domain.notification.entity.Notification;
46
import com.back.domain.notification.enums.NotificationType;
57
import com.back.domain.notification.repository.NotificationRepository;
6-
import com.back.domain.cocktail.entity.Cocktail;
7-
import com.back.domain.cocktail.enums.AlcoholBaseType;
8-
import com.back.domain.cocktail.enums.AlcoholStrength;
9-
import com.back.domain.cocktail.enums.CocktailType;
10-
import com.back.domain.cocktail.repository.CocktailRepository;
118
import com.back.domain.post.category.entity.Category;
129
import com.back.domain.post.category.repository.CategoryRepository;
1310
import com.back.domain.post.comment.entity.Comment;
@@ -19,14 +16,14 @@
1916
import com.back.domain.post.post.repository.PostRepository;
2017
import com.back.domain.user.entity.User;
2118
import com.back.domain.user.repository.UserRepository;
22-
import org.springframework.transaction.annotation.Transactional;
2319
import lombok.RequiredArgsConstructor;
2420
import org.springframework.beans.factory.annotation.Autowired;
2521
import org.springframework.boot.ApplicationRunner;
2622
import org.springframework.context.annotation.Bean;
2723
import org.springframework.context.annotation.Configuration;
2824
import org.springframework.context.annotation.Lazy;
2925
import org.springframework.context.annotation.Profile;
26+
import org.springframework.transaction.annotation.Transactional;
3027

3128
@Configuration
3229
@Profile("dev")
@@ -59,56 +56,15 @@ ApplicationRunner devInitDataApplicationRunner() {
5956
}
6057

6158
@Transactional
62-
public void cocktailInit() {
63-
if (cocktailRepository.count() > 0) return;
64-
65-
// 1) 하이볼
66-
cocktailRepository.save(Cocktail.builder()
67-
.cocktailName("Highball")
68-
.cocktailNameKo("하이볼")
69-
.alcoholStrength(AlcoholStrength.LIGHT)
70-
.cocktailType(CocktailType.LONG)
71-
.alcoholBaseType(AlcoholBaseType.WHISKY)
72-
.ingredient("위스키, 탄산수, 얼음, 레몬피")
73-
.recipe("잔에 얼음 → 위스키 → 탄산수 → 가볍게 스터")
74-
.cocktailImgUrl("/img/cocktail/1.jpg")
75-
.build());
76-
77-
// 2) 진토닉
78-
cocktailRepository.save(Cocktail.builder()
79-
.cocktailName("Gin and Tonic")
80-
.cocktailNameKo("진토닉")
81-
.alcoholStrength(AlcoholStrength.WEAK)
82-
.cocktailType(CocktailType.LONG)
83-
.alcoholBaseType(AlcoholBaseType.GIN)
84-
.ingredient("진, 토닉워터, 얼음, 라임")
85-
.recipe("잔에 얼음 → 진 → 토닉워터 → 라임")
86-
.cocktailImgUrl("/img/cocktail/2.jpg")
87-
.build());
88-
89-
// 3) 올드패션드
90-
cocktailRepository.save(Cocktail.builder()
91-
.cocktailName("Old Fashioned")
92-
.cocktailNameKo("올드패션드")
93-
.alcoholStrength(AlcoholStrength.STRONG)
94-
.cocktailType(CocktailType.SHORT)
95-
.alcoholBaseType(AlcoholBaseType.WHISKY)
96-
.ingredient("버번 위스키, 설탕/시럽, 앙고스투라 비터스, 오렌지 필")
97-
.recipe("시럽+비터스 → 위스키 → 얼음 → 스터 → 오렌지 필")
98-
.cocktailImgUrl("/img/cocktail/3.jpg")
99-
.build());
59+
public void cocktailInit() throws Exception {
60+
// H2 DB에 이미 데이터가 들어가 있는지 확인
61+
if (cocktailRepository.count() > 0) {
62+
System.out.println("Cocktail 데이터가 이미 존재합니다.");
63+
return;
64+
}
10065

101-
// 4) 모히또
102-
cocktailRepository.save(Cocktail.builder()
103-
.cocktailName("Mojito")
104-
.cocktailNameKo("모히또")
105-
.alcoholStrength(AlcoholStrength.LIGHT)
106-
.cocktailType(CocktailType.LONG)
107-
.alcoholBaseType(AlcoholBaseType.RUM)
108-
.ingredient("라임, 민트, 설탕/시럽, 화이트 럼, 탄산수, 얼음")
109-
.recipe("라임+민트+시럽 머들 → 럼 → 얼음 → 탄산수")
110-
.cocktailImgUrl("/img/cocktail/4.jpg")
111-
.build());
66+
// data-h2.sql에서 자동 삽입되므로 여기서는 추가하지 않음.
67+
System.out.println("Cocktail 초기화: CSV에서 데이터를 이미 로드합니다.");
11268
}
11369

11470
@Transactional

src/main/resources/application-dev.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,21 @@ spring:
1414

1515
# JPA 설정
1616
jpa:
17-
defer-datasource-initialization: true # Hibernate(JPA)가 먼저 DDL(테이블 생성)을 실행
17+
defer-datasource-initialization: true
1818
database-platform: org.hibernate.dialect.H2Dialect
1919
hibernate:
20-
ddl-auto: create-drop # 개발용: 시작할 때 테이블 생성, 종료할 때 삭제 / db_dev 에러 방지용으로 upsdate->create-drop 변경
20+
ddl-auto: create-drop # 개발용: 시작할 때 테이블 생성, 종료할 때 삭제 / db_dev 에러 방지용으로 update->create-drop 변경
2121
properties:
2222
hibernate:
2323
format_sql: true
2424
show_sql: true
25+
26+
sql:
27+
init:
28+
mode: always # 항상 실행
29+
encoding: UTF-8
30+
data-locations: classpath:data-h2.sql
31+
2532
cloud:
2633
aws:
2734
region:

src/main/resources/application-test.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
spring:
2-
sql:
3-
init:
4-
mode: always
5-
data-locations: classpath:data-h2.sql
62
datasource:
73
url: jdbc:h2:mem:db_test;MODE=MySQL
84
username: sa

src/test/java/com/back/domain/cocktail/controller/CocktailControllerTest.java

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,21 @@
55
import com.back.domain.cocktail.enums.AlcoholStrength;
66
import com.back.domain.cocktail.enums.CocktailType;
77
import com.back.domain.cocktail.repository.CocktailRepository;
8-
import com.back.domain.cocktail.service.CocktailService;
8+
import com.back.domain.user.service.UserService;
9+
import com.back.global.rq.Rq;
10+
import jakarta.servlet.http.HttpServletRequest;
11+
import jakarta.servlet.http.HttpServletResponse;
912
import org.junit.jupiter.api.DisplayName;
1013
import org.junit.jupiter.api.Test;
14+
import org.mockito.Mockito;
1115
import org.springframework.beans.factory.annotation.Autowired;
1216
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
1317
import org.springframework.boot.test.context.SpringBootTest;
18+
import org.springframework.boot.test.context.TestConfiguration;
19+
import org.springframework.context.annotation.Bean;
1420
import org.springframework.http.MediaType;
1521
import org.springframework.test.context.ActiveProfiles;
22+
import org.springframework.test.context.TestPropertySource;
1623
import org.springframework.test.web.servlet.MockMvc;
1724
import org.springframework.test.web.servlet.ResultActions;
1825
import org.springframework.transaction.annotation.Transactional;
@@ -26,6 +33,10 @@
2633

2734
@ActiveProfiles("test")
2835
@SpringBootTest
36+
@TestPropertySource(properties = {
37+
"custom.cookie.secure=false",
38+
"custom.cookie.same=Strict"
39+
})
2940
@AutoConfigureMockMvc(addFilters = false)
3041
@Transactional
3142
public class CocktailControllerTest {
@@ -35,10 +46,6 @@ public class CocktailControllerTest {
3546
@Autowired
3647
private CocktailRepository cocktailRepository;
3748

38-
@Autowired
39-
private CocktailService cocktailService;
40-
41-
4249
@Test
4350
@DisplayName("칵테일 단건 조회 - 로그인 없이 성공")
4451
void t1() throws Exception {
@@ -130,4 +137,17 @@ void t4() throws Exception {
130137
.andExpect(jsonPath("$.message").value("success"))
131138
.andExpect(jsonPath("$.data").isArray());
132139
}
140+
141+
@TestConfiguration
142+
static class TestConfig {
143+
@Bean
144+
public Rq rq() {
145+
HttpServletRequest req = Mockito.mock(HttpServletRequest.class);
146+
HttpServletResponse resp = Mockito.mock(HttpServletResponse.class);
147+
UserService userService = Mockito.mock(UserService.class);
148+
149+
return new Rq(req, resp, userService);
150+
}
151+
}
152+
133153
}

0 commit comments

Comments
 (0)