Skip to content
Merged
Show file tree
Hide file tree
Changes from 34 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
25374c6
feat: test 의존성 추가
soo0711 Dec 19, 2025
461acbd
refactor: 불필요 설정 제거
soo0711 Dec 19, 2025
54933fb
refactor: 몽고디비용 base entity 추가
soo0711 Dec 19, 2025
8ba89bd
test: TestContainers 설정 및 테스트 추가
soo0711 Dec 19, 2025
f4edce1
test: 예시 테스트 추가
soo0711 Dec 19, 2025
e54aa3f
refactor: 불필요한 test 의존성 중복 제거
soo0711 Dec 21, 2025
a243241
refactor: Kotlin 테스트 의존성 추가
soo0711 Dec 21, 2025
fc5c53c
test: User 테스트 Fixture 추가
soo0711 Dec 21, 2025
ebd4a1c
test: Leenk 테스트 Fixture 추가
soo0711 Dec 21, 2025
ec64a2e
test: LeenkParticipants 테스트 Fixture 추가
soo0711 Dec 21, 2025
e217a14
test: Location 테스트 Fixture 추가
soo0711 Dec 21, 2025
74e0cb7
refactor: MockK 의존성 추가
soo0711 Dec 21, 2025
738d76b
fix: Java 21 빌드 오류 해결을 위한 Kotlin 버전 업그레이드
soo0711 Dec 21, 2025
fdefb58
test: LeenkUsecase Leenk 참여 기능 성공 테스트 추가
soo0711 Dec 21, 2025
2a3ec53
test: LeenkUsecase Leenk 모집 중이 아닌 링크 참여 시 예외 발생 테스트 추가
soo0711 Dec 21, 2025
b3560c0
test: LeenkUsecase Leenk 이미 참여한 사용자가 다시 참여 시 예외 발생 테스트 추가
soo0711 Dec 21, 2025
93d73d9
test: LeenkUsecase Leenk 최대 참여 인원 초과 시 예외 발생 테스트 추가
soo0711 Dec 21, 2025
fc47819
test: LeenkUsecase Leenk 최대 참여 인원 직전 참여 정상 처리 경계값 테스트 추가
soo0711 Dec 21, 2025
cf62bb2
test: participateLeenk 관련 모든 테스트를 @Nested 클래스로 통합
soo0711 Dec 21, 2025
990f4e4
test: LeenkUsecase closeLeenk 정상 동작 검증 테스트 추가
soo0711 Dec 21, 2025
4e606a4
test: LeenkUsecase Leenk 작성자가 아닌 사용자가 링크 마감 시도 시 예외 발생 검증
soo0711 Dec 21, 2025
ae7d5b6
test: LeenkUsecase Leenk 이미 마감된 링크를 다시 마감할 때 예외 발생 검증 테스트 추가
soo0711 Dec 21, 2025
adcb4c0
test: LeenkTestFixture에 마감된 링크 생성 createClosedLeenk 추가
soo0711 Dec 21, 2025
6686587
test: 중복된 closedLeenk 생성 코드를 Fixture로 해결
soo0711 Dec 21, 2025
5589dbe
test: LeenkTestFixture에 최대 참여 인원인 Leenk 생성 createFullLeenk 추가
soo0711 Dec 21, 2025
a750d78
test: fullLeenk 생성 코드를 Fixture로 해결
soo0711 Dec 21, 2025
18ac943
test: LeenkTestFixture에 거의 꽉 찬 링크 생성 createAlmostFullLeenk 추가
soo0711 Dec 21, 2025
7e5511f
test: almostFullLeenk 생성 코드를 Fixture로 해결
soo0711 Dec 21, 2025
9a18f93
test: 불필요한 Location 생성 제거
soo0711 Dec 21, 2025
2271960
test: finishedLeenk 생성 코드를 Fixture로 해결
soo0711 Dec 21, 2025
ef9b3a8
test: LeenkUsecase Leenk 완료된 상태의 링크 마감 시 예외 발생 검증 테스트 추가
soo0711 Dec 21, 2025
10d5349
chore: build.gradle~ 백업 파일 제거
soo0711 Dec 21, 2025
b9ce301
style: 개행 추가
soo0711 Dec 21, 2025
f5db8cf
refactor: 불필요한 의존성, 어노테이션 제거
soo0711 Dec 22, 2025
77b54de
refactor: LeenkUsecaseTest 생성자 의존성 가독성 개선
soo0711 Jan 8, 2026
15a9cff
refactor: LeenkUsecaseTest 최대 참여 인원 검증 하드코딩 제거
soo0711 Jan 8, 2026
ae4792c
refactor: LeenkUsecaseTest 불필요한 테스트 데이터 제거
soo0711 Jan 8, 2026
56ed51c
Merge branch 'dev' of https://github.com/Leets-Makers/Leenk-BE into L…
soo0711 Jan 8, 2026
aa4c05d
test: Kotlin 테스트 의존성 추가
soo0711 Jan 8, 2026
c9c818f
test: Kotlin 테스트 의존성 변경에 따라 테스트 코드 수정
soo0711 Jan 8, 2026
140c5b3
chore: Kotlin 소스 디렉터리 구조 변경
soo0711 Jan 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions build.gradle
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 올린 #82 PR 머지되면 한번 PULL해서 최신화 해주세요!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네넵 감사합니당!!

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ plugins {
id 'java'
id 'org.springframework.boot' version '3.5.0'
id 'io.spring.dependency-management' version '1.1.7'

// Kotlin
id 'org.jetbrains.kotlin.jvm' version '1.9.25'
id 'org.jetbrains.kotlin.plugin.spring' version '1.9.25'
}

group = 'leets'
Expand Down Expand Up @@ -41,6 +45,14 @@ dependencies {
// Test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
testImplementation "org.junit.jupiter:junit-jupiter:5.8.1"
testImplementation 'org.springframework.boot:spring-boot-testcontainers'
testImplementation 'org.testcontainers:junit-jupiter'
testImplementation 'org.testcontainers:mysql'
testImplementation 'org.testcontainers:mongodb'
testImplementation "io.mockk:mockk:1.13.10"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

MockK 버전 업그레이드 권장

MockK 1.13.10은 인라인 값 클래스 모킹에서 ClassCastException을 발생시키는 알려진 버그를 가지고 있습니다. 최신 버전 1.14.7로 업그레이드하면 이 문제와 1.13.x에서 발견된 여러 버그가 해결되며, Kotlin 1.9.25와의 호환성도 문제없습니다.

🤖 Prompt for AI Agents
In build.gradle around line 53 update MockK dependency version to address a
known ClassCastException when mocking inline value classes: change the
testImplementation entry for "io.mockk:mockk" from 1.13.10 to 1.14.7, then
refresh Gradle dependencies and run the test suite to verify no regressions and
Kotlin 1.9.25 compatibility.

testImplementation 'org.jetbrains.kotlin:kotlin-test-junit5'
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib'

// S3
implementation("software.amazon.awssdk:s3:2.31.54")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,25 @@
package leets.leenk.domain.notification.domain.entity;

import leets.leenk.domain.notification.domain.entity.enums.NotificationType;
import org.springframework.data.mongodb.core.mapping.Document;

import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Id;
import leets.leenk.global.common.entity.BaseEntity;
import leets.leenk.global.common.entity.MongoBaseEntity;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@SuperBuilder
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Document(collection = "notifications")
public class Notification extends BaseEntity {
public class Notification extends MongoBaseEntity {

@Id
private String id;

private Long userId;

@Enumerated(EnumType.STRING)
private NotificationType notificationType;

private Boolean isRead;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package leets.leenk.global.common.entity;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;

import java.time.LocalDateTime;

@Getter
@SuperBuilder
@NoArgsConstructor
public abstract class MongoBaseEntity {
Comment on lines +11 to +14
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# Search for @EnableMongoAuditing in the codebase
echo "=== Searching for @EnableMongoAuditing ==="
rg -n '@EnableMongoAuditing' --type=java

echo ""
echo "=== Searching for MongoDB configuration classes ==="
# Look for common configuration class patterns
fd -e java -x grep -l "Configuration\|@Configuration" {} \; | head -20

echo ""
echo "=== Checking for MongoDbFactoryBean or MongoTemplate configuration ==="
rg -n 'MongoTemplate\|MongoRepository' --type=java -i | head -20

Repository: Leets-Makers/Leenk-BE

Length of output: 987


@EnableMongoAuditing 어노테이션 설정이 누락되었습니다.

@CreatedDate@LastModifiedDate 어노테이션이 작동하려면 애플리케이션 설정 클래스에 @EnableMongoAuditing 어노테이션을 추가해야 합니다. 현재 설정이 없으면 createDateupdateDate 필드가 자동으로 채워지지 않습니다. 애플리케이션 설정 파일(예: MongoConfig.java)에 @EnableMongoAuditing을 추가하세요.

🤖 Prompt for AI Agents
In src/main/java/leets/leenk/global/common/entity/MongoBaseEntity.java around
lines 11 to 14, the entity uses @CreatedDate and @LastModifiedDate but Mongo
auditing is not enabled; add @EnableMongoAuditing to your application
configuration (e.g., MongoConfig.java or the main Spring Boot application class
annotated with @Configuration) so Spring Data MongoDB will populate createDate
and updateDate automatically, and verify the config class is scanned by
component scanning (or register a dedicated @Configuration class if necessary).


@CreatedDate
private LocalDateTime createDate;

@LastModifiedDate
private LocalDateTime updateDate;
}
17 changes: 0 additions & 17 deletions src/main/java/leets/leenk/global/config/JpaConfig.java

This file was deleted.

13 changes: 0 additions & 13 deletions src/main/java/leets/leenk/global/config/MongoConfig.java

This file was deleted.

9 changes: 9 additions & 0 deletions src/main/resources/application-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
spring:
jpa:
hibernate:
ddl-auto: create-drop
show-sql: true
properties:
hibernate:
format_sql: true
dialect: org.hibernate.dialect.MySQL8Dialect
13 changes: 0 additions & 13 deletions src/test/java/leets/leenk/LeenkApplicationTests.java

This file was deleted.

19 changes: 19 additions & 0 deletions src/test/java/leets/leenk/config/MysqlTestConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package leets.leenk.config;

import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.context.annotation.Bean;
import org.testcontainers.containers.MySQLContainer;

@TestConfiguration
public class MysqlTestConfig {

private static final String MYSQL_IMAGE = "mysql:8.0.41";

@Bean
@ServiceConnection
public MySQLContainer<?> mysqlContainer() {
return new MySQLContainer<>(MYSQL_IMAGE)
.withDatabaseName("testdb");
}
}
30 changes: 30 additions & 0 deletions src/test/java/leets/leenk/config/TestContainersTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package leets.leenk.config;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.context.annotation.Import;
import org.testcontainers.containers.MySQLContainer;

import static org.assertj.core.api.Assertions.assertThat;

@DataJpaTest
@Import(MysqlTestConfig.class)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class TestContainersTest {

@Autowired
private MySQLContainer<?> mysqlContainer;


@Test
void MySQL_컨테이너_정상_동작_테스트() {
// MySQL 컨테이너 테스트
assertThat(mysqlContainer).isNotNull();
assertThat(mysqlContainer.isRunning()).isTrue();
assertThat(mysqlContainer.getDatabaseName()).isEqualTo("testdb");

System.out.println("MySQL Container JDBC URL: " + mysqlContainer.getJdbcUrl());
}
}
Loading