diff --git a/src/test/java/com/thirdparty/ticketing/domain/member/controller/AuthControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/member/controller/AuthControllerTest.java index a0c7cb03..96c190b3 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/member/controller/AuthControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/member/controller/AuthControllerTest.java @@ -10,22 +10,16 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; import com.thirdparty.ticketing.domain.member.dto.request.LoginRequest; import com.thirdparty.ticketing.domain.member.dto.response.LoginResponse; -import com.thirdparty.ticketing.domain.member.service.AuthService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(controllers = AuthController.class) class AuthControllerTest extends BaseControllerTest { - @MockBean private AuthService authService; - @Test @DisplayName("로그인 API 호출 시") void login() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/domain/member/controller/MemberControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/member/controller/MemberControllerTest.java index 4948f15a..6f88d05a 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/member/controller/MemberControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/member/controller/MemberControllerTest.java @@ -10,26 +10,16 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; -import com.fasterxml.jackson.databind.ObjectMapper; import com.thirdparty.ticketing.domain.member.dto.request.MemberCreationRequest; import com.thirdparty.ticketing.domain.member.dto.response.CreateMemberResponse; -import com.thirdparty.ticketing.domain.member.service.MemberService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(controllers = MemberController.class) class MemberControllerTest extends BaseControllerTest { - @Autowired private ObjectMapper objectMapper; - - @MockBean private MemberService memberService; - @Test @DisplayName("회원 생성 API 호출") void createMember() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/domain/performance/controller/AdminPerformanceControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/performance/controller/AdminPerformanceControllerTest.java index 073d0c68..544c010e 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/performance/controller/AdminPerformanceControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/performance/controller/AdminPerformanceControllerTest.java @@ -11,22 +11,16 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; import com.fasterxml.jackson.core.JsonProcessingException; import com.thirdparty.ticketing.domain.performance.dto.request.PerformanceCreationRequest; -import com.thirdparty.ticketing.domain.performance.service.AdminPerformanceService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(AdminPerformanceController.class) class AdminPerformanceControllerTest extends BaseControllerTest { - @MockBean private AdminPerformanceService adminPerformanceService; - @Test @DisplayName("POST /api/performances") void createPerformance() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/domain/performance/controller/UserPerformanceControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/performance/controller/UserPerformanceControllerTest.java index 80daccdc..4258eb82 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/performance/controller/UserPerformanceControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/performance/controller/UserPerformanceControllerTest.java @@ -1,6 +1,6 @@ package com.thirdparty.ticketing.domain.performance.controller; -import static org.mockito.BDDMockito.*; +import static org.mockito.BDDMockito.given; import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; @@ -11,21 +11,15 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; import com.thirdparty.ticketing.domain.ItemResult; import com.thirdparty.ticketing.domain.performance.dto.PerformanceElement; -import com.thirdparty.ticketing.domain.performance.service.UserPerformanceService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(UserPerformanceController.class) class UserPerformanceControllerTest extends BaseControllerTest { - @MockBean private UserPerformanceService userPerformanceService; - @Test @DisplayName("GET /api/performances") void getPerformances() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/domain/seat/controller/AdminSeatControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/seat/controller/AdminSeatControllerTest.java index 93ee6553..31bcea47 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/seat/controller/AdminSeatControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/seat/controller/AdminSeatControllerTest.java @@ -13,8 +13,6 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; @@ -24,14 +22,10 @@ import com.thirdparty.ticketing.domain.seat.dto.request.SeatCreationRequest; import com.thirdparty.ticketing.domain.seat.dto.request.SeatGradeCreationElement; import com.thirdparty.ticketing.domain.seat.dto.request.SeatGradeCreationRequest; -import com.thirdparty.ticketing.domain.seat.service.AdminSeatService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(AdminSeatController.class) public class AdminSeatControllerTest extends BaseControllerTest { - @MockBean private AdminSeatService adminSeatService; - @Test @DisplayName("관리자 좌석 생성 API") void createSeats() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/domain/seat/controller/SeatControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/seat/controller/SeatControllerTest.java index fe264c74..9754fbce 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/seat/controller/SeatControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/seat/controller/SeatControllerTest.java @@ -15,24 +15,18 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; import com.thirdparty.ticketing.domain.ItemResult; import com.thirdparty.ticketing.domain.seat.dto.response.SeatElement; import com.thirdparty.ticketing.domain.seat.dto.response.SeatGradeElement; -import com.thirdparty.ticketing.domain.seat.service.SeatService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(SeatController.class) public class SeatControllerTest extends BaseControllerTest { public static final String PERFORMANCE_ID = "performanceId"; - @MockBean private SeatService seatService; - @Test @DisplayName("구역의 좌석 목록을 조회한다.") void getSeats() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/domain/ticket/controller/TicketControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/ticket/controller/TicketControllerTest.java index 7a98b9ee..59d61f2f 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/ticket/controller/TicketControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/ticket/controller/TicketControllerTest.java @@ -17,8 +17,6 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; @@ -30,17 +28,11 @@ import com.thirdparty.ticketing.domain.ticket.dto.request.TicketPaymentRequest; import com.thirdparty.ticketing.domain.ticket.dto.response.TicketElement; import com.thirdparty.ticketing.domain.ticket.dto.response.TicketSeatDetail; -import com.thirdparty.ticketing.domain.ticket.service.ReservationService; -import com.thirdparty.ticketing.domain.ticket.service.TicketService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(controllers = TicketController.class) class TicketControllerTest extends BaseControllerTest { public static final String PERFORMANCE_ID = "performanceId"; - @MockBean private TicketService ticketService; - - @MockBean private ReservationService reservationService; @Test @DisplayName("티켓 조회 API 호출 시") diff --git a/src/test/java/com/thirdparty/ticketing/domain/ticket/service/CacheReservationTest.java b/src/test/java/com/thirdparty/ticketing/domain/ticket/service/CacheReservationTest.java index 171e7fc0..e3d9c75c 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/ticket/service/CacheReservationTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/ticket/service/CacheReservationTest.java @@ -14,7 +14,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; import com.thirdparty.ticketing.domain.common.TicketingException; @@ -33,10 +32,9 @@ import com.thirdparty.ticketing.domain.ticket.dto.request.SeatSelectionRequest; import com.thirdparty.ticketing.domain.zone.Zone; import com.thirdparty.ticketing.domain.zone.repository.ZoneRepository; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -public class CacheReservationTest extends TestContainerStarter { +public class CacheReservationTest extends BaseIntegrationTest { @Autowired private SeatRepository seatRepository; @@ -97,9 +95,6 @@ void setUp() { .seatCode("R") .seatStatus(SeatStatus.SELECTABLE) .build()); - // seat의 id가 1인 - RedisSeat redisSeat = new RedisSeat(seat.getSeatId(), null, SeatStatus.SELECTABLE); - lettuceSeatRepository.update(redisSeat); } @AfterEach @@ -109,7 +104,6 @@ void breakUp() { seatGradeRepository.deleteAll(); performanceRepository.deleteAll(); memberRepository.deleteAll(); - stringRedisTemplate.getConnectionFactory().getConnection().flushAll(); } @Test diff --git a/src/test/java/com/thirdparty/ticketing/domain/ticket/service/PersistenceReservationTest.java b/src/test/java/com/thirdparty/ticketing/domain/ticket/service/PersistenceReservationTest.java index 91bfb73b..0734901a 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/ticket/service/PersistenceReservationTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/ticket/service/PersistenceReservationTest.java @@ -17,7 +17,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; @@ -29,10 +28,9 @@ import com.thirdparty.ticketing.domain.common.TicketingException; import com.thirdparty.ticketing.domain.ticket.dto.request.SeatSelectionRequest; import com.thirdparty.ticketing.domain.ticket.dto.request.TicketPaymentRequest; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -public class PersistenceReservationTest extends TestContainerStarter { +public class PersistenceReservationTest extends BaseIntegrationTest { private static final Logger log = LoggerFactory.getLogger(PersistenceReservationTest.class); @Autowired diff --git a/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingAspectTest.java b/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingAspectTest.java index ae837c86..38cc0611 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingAspectTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingAspectTest.java @@ -12,29 +12,19 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.Import; import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.http.ResponseEntity; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.ResultActions; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; import com.thirdparty.ticketing.domain.member.Member; import com.thirdparty.ticketing.domain.member.MemberRole; import com.thirdparty.ticketing.domain.member.service.JwtProvider; -import com.thirdparty.ticketing.domain.waitingsystem.WaitingAspectTest.TestController; import com.thirdparty.ticketing.domain.waitingsystem.waiting.WaitingMember; import com.thirdparty.ticketing.global.waitingsystem.redis.running.RedisRunningRoom; import com.thirdparty.ticketing.global.waitingsystem.redis.waiting.RedisWaitingLine; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -@AutoConfigureMockMvc -@Import(TestController.class) -class WaitingAspectTest extends TestContainerStarter { +class WaitingAspectTest extends BaseIntegrationTest { private static final String AUTHORIZATION_HEADER = "Authorization"; @@ -48,16 +38,6 @@ class WaitingAspectTest extends TestContainerStarter { @Autowired private RedisWaitingLine waitingLine; - @RestController - static class TestController { - - @Waiting - @GetMapping("/api/waiting/test") - public ResponseEntity test() { - return ResponseEntity.ok("test"); - } - } - @BeforeEach void setUp() { redisTemplate.getConnectionFactory().getConnection().commands().flushAll(); diff --git a/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingControllerTest.java index f5eae046..d25188ff 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingControllerTest.java @@ -14,20 +14,15 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(controllers = WaitingController.class) class WaitingControllerTest extends BaseControllerTest { public static final String PERFORMANCE_ID = "performanceId"; - @MockBean private WaitingSystem waitingSystem; - @Test @DisplayName("남은 대기 순번 조회 API 호출 시") void getRemainingCount() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingSystemTest.java b/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingSystemTest.java index 3154ca3c..7bc4a6e7 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingSystemTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/waitingsystem/WaitingSystemTest.java @@ -14,7 +14,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; @@ -26,11 +25,10 @@ import com.thirdparty.ticketing.domain.waitingsystem.running.RunningManager; import com.thirdparty.ticketing.domain.waitingsystem.waiting.WaitingManager; import com.thirdparty.ticketing.domain.waitingsystem.waiting.WaitingMember; +import com.thirdparty.ticketing.support.BaseIntegrationTest; import com.thirdparty.ticketing.support.SpyEventPublisher; -import com.thirdparty.ticketing.support.TestContainerStarter; -@SpringBootTest -class WaitingSystemTest extends TestContainerStarter { +class WaitingSystemTest extends BaseIntegrationTest { private WaitingSystem waitingSystem; diff --git a/src/test/java/com/thirdparty/ticketing/domain/zone/controller/AdminZoneControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/zone/controller/AdminZoneControllerTest.java index 25f5ed12..3d3b3215 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/zone/controller/AdminZoneControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/zone/controller/AdminZoneControllerTest.java @@ -13,24 +13,17 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; import com.fasterxml.jackson.core.JsonProcessingException; -import com.thirdparty.ticketing.domain.zone.contoller.AdminZoneController; import com.thirdparty.ticketing.domain.zone.dto.ZoneCreationElement; import com.thirdparty.ticketing.domain.zone.dto.ZoneCreationRequest; -import com.thirdparty.ticketing.domain.zone.service.AdminZoneService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(AdminZoneController.class) public class AdminZoneControllerTest extends BaseControllerTest { - @MockBean private AdminZoneService adminZoneService; - @Test @DisplayName("POST /api/performances/{performanceId}/zones") void createZones() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/domain/zone/controller/UserZoneControllerTest.java b/src/test/java/com/thirdparty/ticketing/domain/zone/controller/UserZoneControllerTest.java index 5ecfa071..a184b621 100644 --- a/src/test/java/com/thirdparty/ticketing/domain/zone/controller/UserZoneControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/domain/zone/controller/UserZoneControllerTest.java @@ -1,32 +1,27 @@ package com.thirdparty.ticketing.domain.zone.controller; -import static org.mockito.BDDMockito.*; +import static org.mockito.BDDMockito.given; import static org.springframework.restdocs.headers.HeaderDocumentation.headerWithName; import static org.springframework.restdocs.headers.HeaderDocumentation.requestHeaders; -import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.*; -import static org.springframework.restdocs.payload.PayloadDocumentation.*; -import static org.springframework.restdocs.request.RequestDocumentation.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; +import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; +import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.web.servlet.ResultActions; import com.thirdparty.ticketing.domain.ItemResult; -import com.thirdparty.ticketing.domain.zone.contoller.UserZoneController; import com.thirdparty.ticketing.domain.zone.dto.ZoneElement; -import com.thirdparty.ticketing.domain.zone.service.UserZoneService; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(UserZoneController.class) class UserZoneControllerTest extends BaseControllerTest { - @MockBean private UserZoneService userZoneService; - @Test @DisplayName("GET /api/performances/{performanceId}/zones") void getZones() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/global/config/ProductionRedisConfigTest.java b/src/test/java/com/thirdparty/ticketing/global/config/ProductionRedisConfigTest.java index 9d0dcb81..ae1e3e87 100644 --- a/src/test/java/com/thirdparty/ticketing/global/config/ProductionRedisConfigTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/config/ProductionRedisConfigTest.java @@ -5,13 +5,11 @@ import org.junit.jupiter.api.Test; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class ProductionRedisConfigTest extends TestContainerStarter { +class ProductionRedisConfigTest extends BaseIntegrationTest { @Autowired private RedissonClient redissonClient; diff --git a/src/test/java/com/thirdparty/ticketing/global/security/LoginMemberArgumentResolverTest.java b/src/test/java/com/thirdparty/ticketing/global/security/LoginMemberArgumentResolverTest.java index ac8d9bea..65dac40d 100644 --- a/src/test/java/com/thirdparty/ticketing/global/security/LoginMemberArgumentResolverTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/security/LoginMemberArgumentResolverTest.java @@ -7,32 +7,15 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.web.servlet.ResultActions; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import com.thirdparty.ticketing.domain.common.LoginMember; import com.thirdparty.ticketing.domain.member.Member; import com.thirdparty.ticketing.domain.member.MemberRole; -import com.thirdparty.ticketing.global.security.LoginMemberArgumentResolverTest.ResolverTestController; import com.thirdparty.ticketing.support.BaseControllerTest; -@WebMvcTest(controllers = ResolverTestController.class) class LoginMemberArgumentResolverTest extends BaseControllerTest { - @RestController - @RequestMapping("/api/test/resolver") - public static class ResolverTestController { - - @GetMapping - public String resolve(@LoginMember String email) { - return email; - } - } - @Nested @DisplayName("핸들러 메서드 파라미터에 @LoginMember가 포함되어 있으면") class ParameterHasLoginMember { diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/WaitingEventListenerTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/WaitingEventListenerTest.java index 8365fe19..b994cd76 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/WaitingEventListenerTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/WaitingEventListenerTest.java @@ -9,16 +9,14 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ZSetOperations; import com.thirdparty.ticketing.domain.common.EventPublisher; import com.thirdparty.ticketing.domain.waitingsystem.WaitingSystem; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class WaitingEventListenerTest extends TestContainerStarter { +class WaitingEventListenerTest extends BaseIntegrationTest { @Autowired private WaitingSystem waitingSystem; diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/DebounceAspectTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/DebounceAspectTest.java index 71142e34..02a1c176 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/DebounceAspectTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/DebounceAspectTest.java @@ -5,54 +5,19 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicInteger; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Import; -import com.thirdparty.ticketing.domain.waitingsystem.Debounce; -import com.thirdparty.ticketing.global.waitingsystem.redis.DebounceAspectTest.TestConfig; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; +import com.thirdparty.ticketing.support.integration.AspectTestConfig.DebounceTarget; -@SpringBootTest -@Import(TestConfig.class) -class DebounceAspectTest extends TestContainerStarter { +class DebounceAspectTest extends BaseIntegrationTest { @Autowired private DebounceTarget debounceTarget; - @TestConfiguration - static class TestConfig { - - @Bean - public DebounceTarget debounceTarget() { - return new DebounceTarget(); - } - } - - static class DebounceTarget { - - private final AtomicInteger counter; - - public DebounceTarget() { - counter = new AtomicInteger(0); - } - - @Debounce - public void increment() { - counter.incrementAndGet(); - } - - public int get() { - return counter.get(); - } - } - @Nested @DisplayName("디바운스 aop 적용 시") class DebounceTest { diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningCounterTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningCounterTest.java index 9be775ab..ce6ad88d 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningCounterTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningCounterTest.java @@ -13,14 +13,12 @@ import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class RedisRunningCounterTest extends TestContainerStarter { +class RedisRunningCounterTest extends BaseIntegrationTest { @Autowired private RedisRunningCounter runningCounter; diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningManagerTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningManagerTest.java index 469268eb..52724c1a 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningManagerTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningManagerTest.java @@ -11,16 +11,14 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.data.redis.core.ZSetOperations; import com.thirdparty.ticketing.domain.waitingsystem.waiting.WaitingMember; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class RedisRunningManagerTest extends TestContainerStarter { +class RedisRunningManagerTest extends BaseIntegrationTest { @Autowired private RedisRunningManager runningManager; diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningRoomTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningRoomTest.java index 7f81a964..74c664bd 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningRoomTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/running/RedisRunningRoomTest.java @@ -14,15 +14,13 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ZSetOperations; import com.thirdparty.ticketing.domain.waitingsystem.waiting.WaitingMember; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class RedisRunningRoomTest extends TestContainerStarter { +class RedisRunningRoomTest extends BaseIntegrationTest { @Autowired private RedisRunningRoom runningRoom; diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingCounterTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingCounterTest.java index 57a5a2a4..b4e2cf5b 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingCounterTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingCounterTest.java @@ -11,13 +11,11 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class RedisWaitingCounterTest extends TestContainerStarter { +class RedisWaitingCounterTest extends BaseIntegrationTest { @Autowired private RedisWaitingCounter waitingCounter; diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingLineTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingLineTest.java index f3fcae14..3feb1fa8 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingLineTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingLineTest.java @@ -12,17 +12,15 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ZSetOperations; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.thirdparty.ticketing.domain.waitingsystem.waiting.WaitingMember; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class RedisWaitingLineTest extends TestContainerStarter { +class RedisWaitingLineTest extends BaseIntegrationTest { private static final String WAITING_LINE_KEY = "waiting_line:"; diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingManagerTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingManagerTest.java index 9a181569..f353ab34 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingManagerTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingManagerTest.java @@ -14,7 +14,6 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ZSetOperations; @@ -25,10 +24,9 @@ import com.thirdparty.ticketing.domain.common.TicketingException; import com.thirdparty.ticketing.domain.waitingsystem.waiting.WaitingMember; import com.thirdparty.ticketing.global.waitingsystem.ObjectMapperUtils; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class RedisWaitingManagerTest extends TestContainerStarter { +class RedisWaitingManagerTest extends BaseIntegrationTest { @Autowired private RedisWaitingManager waitingManager; diff --git a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingRoomTest.java b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingRoomTest.java index ca49ad42..7674f027 100644 --- a/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingRoomTest.java +++ b/src/test/java/com/thirdparty/ticketing/global/waitingsystem/redis/waiting/RedisWaitingRoomTest.java @@ -12,17 +12,15 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.StringRedisTemplate; import com.fasterxml.jackson.databind.ObjectMapper; import com.thirdparty.ticketing.domain.waitingsystem.waiting.WaitingMember; import com.thirdparty.ticketing.global.waitingsystem.ObjectMapperUtils; -import com.thirdparty.ticketing.support.TestContainerStarter; +import com.thirdparty.ticketing.support.BaseIntegrationTest; -@SpringBootTest -class RedisWaitingRoomTest extends TestContainerStarter { +class RedisWaitingRoomTest extends BaseIntegrationTest { @Autowired private RedisWaitingRoom waitingRoom; diff --git a/src/test/java/com/thirdparty/ticketing/support/BaseControllerTest.java b/src/test/java/com/thirdparty/ticketing/support/BaseControllerTest.java index 1556d426..f4c50aff 100644 --- a/src/test/java/com/thirdparty/ticketing/support/BaseControllerTest.java +++ b/src/test/java/com/thirdparty/ticketing/support/BaseControllerTest.java @@ -9,7 +9,9 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.restdocs.RestDocumentationContextProvider; @@ -24,12 +26,32 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.thirdparty.ticketing.domain.member.Member; import com.thirdparty.ticketing.domain.member.MemberRole; +import com.thirdparty.ticketing.domain.member.service.AuthService; import com.thirdparty.ticketing.domain.member.service.JwtProvider; +import com.thirdparty.ticketing.domain.member.service.MemberService; +import com.thirdparty.ticketing.domain.performance.service.AdminPerformanceService; +import com.thirdparty.ticketing.domain.performance.service.UserPerformanceService; +import com.thirdparty.ticketing.domain.seat.service.AdminSeatService; +import com.thirdparty.ticketing.domain.seat.service.SeatService; +import com.thirdparty.ticketing.domain.ticket.service.ReservationService; +import com.thirdparty.ticketing.domain.ticket.service.TicketService; +import com.thirdparty.ticketing.domain.waitingsystem.WaitingSystem; +import com.thirdparty.ticketing.domain.zone.service.AdminZoneService; +import com.thirdparty.ticketing.domain.zone.service.UserZoneService; import com.thirdparty.ticketing.global.config.SecurityConfig; import com.thirdparty.ticketing.global.config.WebConfig; import com.thirdparty.ticketing.support.BaseControllerTest.RestDocsConfig; - -@Import({RestDocsConfig.class, SecurityConfig.class, WebConfig.class}) +import com.thirdparty.ticketing.support.controller.DocsController; +import com.thirdparty.ticketing.support.controller.ResolverTestController; + +@WebMvcTest +@Import({ + RestDocsConfig.class, + SecurityConfig.class, + WebConfig.class, + DocsController.class, + ResolverTestController.class +}) @ExtendWith(RestDocumentationExtension.class) public abstract class BaseControllerTest { @@ -39,14 +61,36 @@ public abstract class BaseControllerTest { @Autowired protected ObjectMapper objectMapper; + @Autowired protected RestDocumentationResultHandler restDocs; + + @MockBean protected MemberService memberService; + + @MockBean protected TicketService ticketService; + + @MockBean protected AdminPerformanceService adminPerformanceService; + + @MockBean protected UserPerformanceService userPerformanceService; + + @MockBean protected AdminSeatService adminSeatService; + + @MockBean protected SeatService seatService; + + @MockBean protected AdminZoneService adminZoneService; + + @MockBean protected UserZoneService userZoneService; + + @MockBean protected ReservationService reservationService; + + @MockBean protected AuthService authService; + + @MockBean protected WaitingSystem waitingSystem; + protected String adminBearerToken; protected String userBearerToken; protected MockMvc mockMvc; - @Autowired protected RestDocumentationResultHandler restDocs; - @TestConfiguration public static class RestDocsConfig { diff --git a/src/test/java/com/thirdparty/ticketing/support/BaseIntegrationTest.java b/src/test/java/com/thirdparty/ticketing/support/BaseIntegrationTest.java new file mode 100644 index 00000000..2f9d113a --- /dev/null +++ b/src/test/java/com/thirdparty/ticketing/support/BaseIntegrationTest.java @@ -0,0 +1,25 @@ +package com.thirdparty.ticketing.support; + +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; + +import com.thirdparty.ticketing.support.integration.AspectTestConfig; +import com.thirdparty.ticketing.support.integration.AspectTestConfig.DebounceTarget; + +@SpringBootTest +@AutoConfigureMockMvc +@Import(AspectTestConfig.class) +public class BaseIntegrationTest extends TestContainerStarter { + + @TestConfiguration + static class TestConfig { + + @Bean + public DebounceTarget debounceTarget() { + return new DebounceTarget(); + } + } +} diff --git a/src/test/java/com/thirdparty/ticketing/support/controller/DocsController.java b/src/test/java/com/thirdparty/ticketing/support/controller/DocsController.java new file mode 100644 index 00000000..dcd3ebf7 --- /dev/null +++ b/src/test/java/com/thirdparty/ticketing/support/controller/DocsController.java @@ -0,0 +1,36 @@ +package com.thirdparty.ticketing.support.controller; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/test/docs") +public class DocsController { + + public record HelloRequest(String name) {} + + @GetMapping("/hello") + public ResponseEntity> hello(@RequestParam("name") String name) { + Map map = new HashMap<>(); + map.put("hello", name); + return ResponseEntity.ok(map); + } + + @PostMapping("/hello/{test}") + public ResponseEntity> hello2( + @PathVariable("test") Long testVariable, @RequestBody HelloRequest request) { + Map map = new HashMap<>(); + map.put("hello", request.name); + map.put("pathVariable", testVariable.toString()); + return ResponseEntity.ok(map); + } +} diff --git a/src/test/java/com/thirdparty/ticketing/support/DocumentationTest.java b/src/test/java/com/thirdparty/ticketing/support/controller/DocumentationTest.java similarity index 67% rename from src/test/java/com/thirdparty/ticketing/support/DocumentationTest.java rename to src/test/java/com/thirdparty/ticketing/support/controller/DocumentationTest.java index 1441adc8..9c1f0c37 100644 --- a/src/test/java/com/thirdparty/ticketing/support/DocumentationTest.java +++ b/src/test/java/com/thirdparty/ticketing/support/controller/DocumentationTest.java @@ -1,4 +1,4 @@ -package com.thirdparty.ticketing.support; +package com.thirdparty.ticketing.support.controller; import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.get; import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post; @@ -10,55 +10,18 @@ import static org.springframework.restdocs.request.RequestDocumentation.queryParameters; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import java.util.HashMap; -import java.util.Map; - import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; -import org.springframework.context.annotation.Import; import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.test.web.servlet.ResultActions; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; -import com.thirdparty.ticketing.support.DocumentationTest.DocsController; +import com.thirdparty.ticketing.support.BaseControllerTest; +import com.thirdparty.ticketing.support.controller.DocsController.HelloRequest; -@WebMvcTest(controllers = DocumentationTest.class) -@Import(DocsController.class) @DisplayName("API 문서 테스트 코드 작성 시") public class DocumentationTest extends BaseControllerTest { - public record HelloRequest(String name) {} - - @RestController - @RequestMapping("/test/docs") - public static class DocsController { - - @GetMapping("/hello") - public ResponseEntity> hello(@RequestParam("name") String name) { - Map map = new HashMap<>(); - map.put("hello", name); - return ResponseEntity.ok(map); - } - - @PostMapping("/hello/{test}") - public ResponseEntity> hello2( - @PathVariable("test") Long testVariable, @RequestBody HelloRequest request) { - Map map = new HashMap<>(); - map.put("hello", request.name); - map.put("pathVariable", testVariable.toString()); - return ResponseEntity.ok(map); - } - } - @Test @DisplayName("GET 요청을 다음과 같이 문서화 할 수 있다.") public void getDocs() throws Exception { diff --git a/src/test/java/com/thirdparty/ticketing/support/controller/ResolverTestController.java b/src/test/java/com/thirdparty/ticketing/support/controller/ResolverTestController.java new file mode 100644 index 00000000..dc6da464 --- /dev/null +++ b/src/test/java/com/thirdparty/ticketing/support/controller/ResolverTestController.java @@ -0,0 +1,17 @@ +package com.thirdparty.ticketing.support.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.thirdparty.ticketing.domain.common.LoginMember; + +@RestController +@RequestMapping("/api/test/resolver") +public class ResolverTestController { + + @GetMapping + public String resolve(@LoginMember String email) { + return email; + } +} diff --git a/src/test/java/com/thirdparty/ticketing/support/integration/AspectTestConfig.java b/src/test/java/com/thirdparty/ticketing/support/integration/AspectTestConfig.java new file mode 100644 index 00000000..dc62c197 --- /dev/null +++ b/src/test/java/com/thirdparty/ticketing/support/integration/AspectTestConfig.java @@ -0,0 +1,49 @@ +package com.thirdparty.ticketing.support.integration; + +import java.util.concurrent.atomic.AtomicInteger; + +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.thirdparty.ticketing.domain.waitingsystem.Debounce; +import com.thirdparty.ticketing.domain.waitingsystem.Waiting; + +@TestConfiguration +public class AspectTestConfig { + + @Bean + public DebounceTarget debounceTarget() { + return new DebounceTarget(); + } + + public static class DebounceTarget { + + private final AtomicInteger counter; + + public DebounceTarget() { + counter = new AtomicInteger(0); + } + + @Debounce + public void increment() { + counter.incrementAndGet(); + } + + public int get() { + return counter.get(); + } + } + + @RestController + static class TestController { + + @Waiting + @GetMapping("/api/waiting/test") + public ResponseEntity test() { + return ResponseEntity.ok("test"); + } + } +}