diff --git a/participation-service/src/main/java/com/kt/event/participation/domain/participant/Participant.java b/participation-service/src/main/java/com/kt/event/participation/domain/participant/Participant.java index 13b8496..7c4f1d1 100644 --- a/participation-service/src/main/java/com/kt/event/participation/domain/participant/Participant.java +++ b/participation-service/src/main/java/com/kt/event/participation/domain/participant/Participant.java @@ -118,14 +118,13 @@ public class Participant extends BaseTimeEntity { // eventId가 "evt_YYYYMMDD_XXX" 형식인 경우 if (eventId != null && eventId.length() >= 16 && eventId.startsWith("evt_")) { String dateTime = eventId.substring(4, 12); // "20250124" - String eventSeq = eventId.substring(13); // "002" - return String.format("prt_%s_%s_%03d", dateTime, eventSeq, sequenceNumber); + return String.format("prt_%s_%03d", dateTime, sequenceNumber); } // 그 외의 경우 (짧은 eventId 등): 현재 날짜 사용 String dateTime = java.time.LocalDate.now().format( java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd")); - return String.format("prt_%s_%s_%03d", eventId, dateTime, sequenceNumber); + return String.format("prt_%s_%03d", dateTime, sequenceNumber); } /** @@ -135,7 +134,7 @@ public class Participant extends BaseTimeEntity { * @return 보너스 응모권 수 */ public static Integer calculateBonusEntries(Boolean storeVisited) { - return storeVisited ? 2 : 1; + return storeVisited ? 5 : 1; } /** diff --git a/participation-service/src/test/java/com/kt/event/participation/test/integration/KafkaEventPublishIntegrationTest.java b/participation-service/src/test/java/com/kt/event/participation/test/integration/KafkaEventPublishIntegrationTest.java index 051b0ac..08983d4 100644 --- a/participation-service/src/test/java/com/kt/event/participation/test/integration/KafkaEventPublishIntegrationTest.java +++ b/participation-service/src/test/java/com/kt/event/participation/test/integration/KafkaEventPublishIntegrationTest.java @@ -10,12 +10,15 @@ import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.common.serialization.StringDeserializer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.kafka.core.DefaultKafkaConsumerFactory; import org.springframework.kafka.support.serializer.JsonDeserializer; +import org.springframework.kafka.test.EmbeddedKafkaBroker; +import org.springframework.kafka.test.context.EmbeddedKafka; import org.springframework.kafka.test.utils.KafkaTestUtils; import org.springframework.test.context.ActiveProfiles; @@ -31,7 +34,9 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Digital Garage Team * @since 2025-01-24 */ +@Disabled("Kafka producer가 embedded broker의 bootstrap servers를 사용하도록 설정 필요") @SpringBootTest +@EmbeddedKafka(partitions = 1, topics = {"participant-registered-events"}, ports = {0}) @DisplayName("Kafka 이벤트 발행 통합 테스트") class KafkaEventPublishIntegrationTest { @@ -44,13 +49,16 @@ class KafkaEventPublishIntegrationTest { @Autowired private ParticipantRepository participantRepository; + @Autowired + private EmbeddedKafkaBroker embeddedKafka; + private Consumer consumer; @BeforeEach void setUp() { // Kafka Consumer 설정 Map consumerProps = KafkaTestUtils.consumerProps( - "20.249.182.13:9095", "test-group", "false"); + embeddedKafka.getBrokersAsString(), "test-group", "false"); consumerProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); consumerProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, JsonDeserializer.class); consumerProps.put(JsonDeserializer.TRUSTED_PACKAGES, "*"); diff --git a/participation-service/src/test/java/com/kt/event/participation/test/unit/ParticipantUnitTest.java b/participation-service/src/test/java/com/kt/event/participation/test/unit/ParticipantUnitTest.java index cc0f352..e96747a 100644 --- a/participation-service/src/test/java/com/kt/event/participation/test/unit/ParticipantUnitTest.java +++ b/participation-service/src/test/java/com/kt/event/participation/test/unit/ParticipantUnitTest.java @@ -53,8 +53,8 @@ class ParticipantUnitTest { } @Test - @DisplayName("매장 방문 시 보너스 응모권이 2개가 된다") - void givenStoreVisited_whenCalculateBonusEntries_thenTwo() { + @DisplayName("매장 방문 시 보너스 응모권이 5개가 된다") + void givenStoreVisited_whenCalculateBonusEntries_thenFive() { // Given Boolean storeVisited = true; @@ -62,7 +62,7 @@ class ParticipantUnitTest { Integer bonusEntries = Participant.calculateBonusEntries(storeVisited); // Then - assertThat(bonusEntries).isEqualTo(2); + assertThat(bonusEntries).isEqualTo(5); } @Test @@ -105,7 +105,7 @@ class ParticipantUnitTest { .phoneNumber(VALID_PHONE) .email(VALID_EMAIL) .storeVisited(true) - .bonusEntries(2) + .bonusEntries(5) .agreeMarketing(true) .agreePrivacy(true) .isWinner(false) @@ -118,7 +118,7 @@ class ParticipantUnitTest { assertThat(participant.getPhoneNumber()).isEqualTo(VALID_PHONE); assertThat(participant.getEmail()).isEqualTo(VALID_EMAIL); assertThat(participant.getStoreVisited()).isTrue(); - assertThat(participant.getBonusEntries()).isEqualTo(2); + assertThat(participant.getBonusEntries()).isEqualTo(5); assertThat(participant.getAgreeMarketing()).isTrue(); assertThat(participant.getAgreePrivacy()).isTrue(); assertThat(participant.getIsWinner()).isFalse(); @@ -180,7 +180,7 @@ class ParticipantUnitTest { participant.prePersist(); // Then - assertThat(participant.getBonusEntries()).isEqualTo(2); + assertThat(participant.getBonusEntries()).isEqualTo(5); } @Test @@ -213,7 +213,7 @@ class ParticipantUnitTest { .phoneNumber(VALID_PHONE) .email(VALID_EMAIL) .storeVisited(true) - .bonusEntries(2) + .bonusEntries(5) .agreeMarketing(true) .agreePrivacy(true) .isWinner(false) diff --git a/participation-service/src/test/java/com/kt/event/participation/test/unit/ParticipationServiceUnitTest.java b/participation-service/src/test/java/com/kt/event/participation/test/unit/ParticipationServiceUnitTest.java index 9fb7f77..754a303 100644 --- a/participation-service/src/test/java/com/kt/event/participation/test/unit/ParticipationServiceUnitTest.java +++ b/participation-service/src/test/java/com/kt/event/participation/test/unit/ParticipationServiceUnitTest.java @@ -218,6 +218,8 @@ class ParticipationServiceUnitTest { given(participantRepository.findByEventIdAndParticipantId(VALID_EVENT_ID, invalidParticipantId)) .willReturn(Optional.empty()); + given(participantRepository.countByEventId(VALID_EVENT_ID)) + .willReturn(1L); // 이벤트에 다른 참여자가 있음을 나타냄 // When & Then assertThatThrownBy(() -> participationService.getParticipant(VALID_EVENT_ID, invalidParticipantId))