Skip to content

Commit 836b809

Browse files
committed
fix: 기존 테스트 실패 수정
- LikeServiceIntegrationTest: LikeFacade를 통해 멱등성 보장 - DlqPublisherTest: RedisTestContainersConfig 추가 - commerce-streamer CacheConfig 추가 (RedisTemplate<String, Object>)
1 parent 31047f5 commit 836b809

3 files changed

Lines changed: 46 additions & 2 deletions

File tree

apps/commerce-api/src/test/java/com/loopers/domain/like/LikeServiceIntegrationTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.loopers.domain.like;
22

3+
import com.loopers.application.like.LikeFacade;
34
import com.loopers.domain.common.vo.Money;
45
import com.loopers.domain.like.repository.LikeRepository;
56
import com.loopers.domain.like.service.LikeService;
@@ -23,6 +24,9 @@ class LikeServiceIntegrationTest {
2324
@Autowired
2425
private LikeService likeService;
2526

27+
@Autowired
28+
private LikeFacade likeFacade;
29+
2630
@Autowired
2731
private LikeRepository likeRepository;
2832

@@ -76,10 +80,10 @@ void duplicateLike() {
7680
Member member = memberRepository.save(createMember("user1", "u1@mail.com"));
7781
Product product = productRepository.save(createProduct(1L, "상품A", 1000L, 10));
7882

79-
likeService.like(member.getId(), product.getId());
83+
likeFacade.likeProduct(member.getId(), product.getId());
8084

8185
// when
82-
likeService.like(member.getId(), product.getId()); // 중복 호출
86+
likeFacade.likeProduct(member.getId(), product.getId()); // 중복 호출 - Facade에서 멱등성 보장
8387

8488
// then
8589
long likeCount = likeRepository.countByProductId(product.getId());
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.loopers.infrastructure.cache;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.fasterxml.jackson.databind.SerializationFeature;
5+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
6+
import org.springframework.context.annotation.Bean;
7+
import org.springframework.context.annotation.Configuration;
8+
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
9+
import org.springframework.data.redis.core.RedisTemplate;
10+
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
11+
import org.springframework.data.redis.serializer.StringRedisSerializer;
12+
13+
@Configuration
14+
public class CacheConfig {
15+
16+
@Bean
17+
public RedisTemplate<String, Object> cacheRedisTemplate(LettuceConnectionFactory connectionFactory) {
18+
RedisTemplate<String, Object> template = new RedisTemplate<>();
19+
template.setConnectionFactory(connectionFactory);
20+
21+
// Key serializer
22+
template.setKeySerializer(new StringRedisSerializer());
23+
template.setHashKeySerializer(new StringRedisSerializer());
24+
25+
// Value serializer - JSON
26+
ObjectMapper objectMapper = new ObjectMapper();
27+
objectMapper.registerModule(new JavaTimeModule());
28+
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
29+
30+
GenericJackson2JsonRedisSerializer jsonSerializer = new GenericJackson2JsonRedisSerializer(objectMapper);
31+
template.setValueSerializer(jsonSerializer);
32+
template.setHashValueSerializer(jsonSerializer);
33+
34+
template.afterPropertiesSet();
35+
return template;
36+
}
37+
}

apps/commerce-streamer/src/test/java/com/loopers/infrastructure/kafka/DlqPublisherTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import com.loopers.domain.dlq.DlqMessage;
55
import com.loopers.infrastructure.persistence.DlqMessageRepository;
6+
import com.loopers.testcontainers.RedisTestContainersConfig;
67
import org.apache.kafka.clients.consumer.ConsumerRecord;
78
import org.junit.jupiter.api.DisplayName;
89
import org.junit.jupiter.api.Test;
910
import org.springframework.beans.factory.annotation.Autowired;
1011
import org.springframework.boot.test.context.SpringBootTest;
12+
import org.springframework.context.annotation.Import;
1113
import org.springframework.test.context.ActiveProfiles;
1214
import org.springframework.transaction.annotation.Transactional;
1315

@@ -18,6 +20,7 @@
1820
*/
1921
@SpringBootTest
2022
@ActiveProfiles("test")
23+
@Import(RedisTestContainersConfig.class)
2124
@Transactional
2225
class DlqPublisherTest {
2326

0 commit comments

Comments
 (0)