Skip to content

Commit 0004947

Browse files
committed
[#260]; test: FlywayMailReservationMigrationTest에서 V3 적용을 위해 member 테이블 사전 생성
1 parent 7a6678e commit 0004947

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

src/test/kotlin/com/yourssu/scouter/common/storage/domain/mail/FlywayMailReservationMigrationTest.kt

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ import org.testcontainers.utility.DockerImageName
1010
import java.sql.DriverManager
1111

1212
/**
13-
* Flyway V2 마이그레이션( mail_reservation.status 컬럼 추가 )이 MySQL에서 정상 동작하는지 검증한다.
14-
* 사전조건: mail_reservation 테이블이 존재해야 함 (baseline 또는 Hibernate로 생성된 스키마)
13+
* Flyway V2·V3 마이그레이션이 MySQL에서 정상 동작하는지 검증한다.
14+
* - V2: mail_reservation.status 컬럼 추가 및 기존 데이터 보정
15+
* - V3: member.state ENUM에 COMPLETED 추가 (member 테이블 필요)
16+
* 사전조건: mail_reservation·member 테이블을 테스트에서 생성 후 Flyway 전체 실행(최신까지 적용).
1517
* Docker 필요. Docker 없으면 스킵됨.
16-
*
17-
* 주의: V1 migration SQL이 없어 테스트에서 DDL로 테이블을 직접 생성한다.
18-
* V1에서 mail_reservation 컬럼 구조가 변경되면 이 테스트의 DDL도 함께 수정해야 한다.
1918
*/
2019
@Testcontainers(disabledWithoutDocker = true)
2120
@Suppress("NonAsciiCharacters")
@@ -37,9 +36,10 @@ class FlywayMailReservationMigrationTest {
3736
val username = mysql.username
3837
val password = mysql.password
3938

40-
// 1. 사전조건: mail_reservation 테이블만 생성 (마이그레이션 대상만 검증)
39+
// 1. 사전조건: V2·V3 마이그레이션에 필요한 테이블만 생성 (실무와 동일하게 최신 마이그레이션 전부 적용)
4140
DriverManager.getConnection(jdbcUrl, username, password).use { conn ->
4241
conn.createStatement().use { stmt ->
42+
// V2 대상
4343
stmt.execute(
4444
"""
4545
CREATE TABLE IF NOT EXISTS mail_reservation (
@@ -49,17 +49,25 @@ class FlywayMailReservationMigrationTest {
4949
)
5050
""".trimIndent(),
5151
)
52-
// 과거 예약 1건, 미래 예약 1건 삽입 (mail_id는 FK 없음)
5352
stmt.execute(
5453
"INSERT INTO mail_reservation (mail_id, reservation_time) VALUES (1, DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR))",
5554
)
5655
stmt.execute(
5756
"INSERT INTO mail_reservation (mail_id, reservation_time) VALUES (1, DATE_ADD(UTC_TIMESTAMP(), INTERVAL 1 HOUR))",
5857
)
58+
// V3 대상: member 테이블 (V3 적용 전 state ENUM)
59+
stmt.execute(
60+
"""
61+
CREATE TABLE IF NOT EXISTS member (
62+
id BIGINT AUTO_INCREMENT PRIMARY KEY,
63+
state ENUM('ACTIVE', 'INACTIVE', 'GRADUATED', 'WITHDRAWN') NOT NULL
64+
)
65+
""".trimIndent(),
66+
)
5967
}
6068
}
6169

62-
// 2. Flyway 실행 (baseline-on-migrate: true, baseline-version: 1)
70+
// 2. Flyway 실행 — target 제한 없이 최신까지 전부 적용 (실무와 동일)
6371
val flyway =
6472
Flyway.configure()
6573
.dataSource(jdbcUrl, username, password)

0 commit comments

Comments
 (0)