11package com.nilgil.commerce.order
22
3+ import com.nilgil.commerce.common.error.CoreException
34import org.assertj.core.api.Assertions.assertThat
45import org.assertj.core.api.Assertions.assertThatThrownBy
56import org.junit.jupiter.api.DisplayName
@@ -37,14 +38,17 @@ class OrderTest {
3738 }
3839
3940 @Test
40- fun `CREATED 상태가 아니면 IllegalStateException이 발생한다` () {
41+ fun `CREATED 상태가 아니면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
4142 // given
4243 val order = OrderFixtures .anOrder()
4344 order.pay(paymentId = 123L )
4445
4546 // when, then
4647 assertThatThrownBy { order.pay(paymentId = 456L ) }
47- .isInstanceOf(IllegalStateException ::class .java)
48+ .isInstanceOf(CoreException ::class .java)
49+ .extracting { it as CoreException }
50+ .extracting(CoreException ::type)
51+ .isEqualTo(OrderError .INVALID_STATUS_TRANSITION )
4852 }
4953 }
5054
@@ -65,13 +69,16 @@ class OrderTest {
6569 }
6670
6771 @Test
68- fun `PAID 상태가 아니면 IllegalStateException이 발생한다` () {
72+ fun `PAID 상태가 아니면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
6973 // given
7074 val order = OrderFixtures .anOrder()
7175
7276 // when, then
7377 assertThatThrownBy { order.complete() }
74- .isInstanceOf(IllegalStateException ::class .java)
78+ .isInstanceOf(CoreException ::class .java)
79+ .extracting { it as CoreException }
80+ .extracting(CoreException ::type)
81+ .isEqualTo(OrderError .INVALID_STATUS_TRANSITION )
7582 }
7683 }
7784
@@ -104,20 +111,22 @@ class OrderTest {
104111 }
105112
106113 @Test
107- fun `COMPLETED 상태이면 IllegalStateException이 발생한다` () {
114+ fun `COMPLETED 상태이면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
108115 // given
109116 val order = OrderFixtures .anOrder()
110117 order.pay(123L )
111118 order.complete()
112119
113120 // when, then
114121 assertThatThrownBy { order.cancel() }
115- .isInstanceOf(IllegalStateException ::class .java)
116- .hasMessage(" 취소할 수 없는 상태입니다." )
122+ .isInstanceOf(CoreException ::class .java)
123+ .extracting { it as CoreException }
124+ .extracting(CoreException ::type)
125+ .isEqualTo(OrderError .INVALID_STATUS_TRANSITION )
117126 }
118127
119128 @Test
120- fun `RETURNED 상태이면 IllegalStateException이 발생한다` () {
129+ fun `RETURNED 상태이면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
121130 // given
122131 val order = OrderFixtures .anOrder()
123132 order.pay(123L )
@@ -126,8 +135,10 @@ class OrderTest {
126135
127136 // when, then
128137 assertThatThrownBy { order.cancel() }
129- .isInstanceOf(IllegalStateException ::class .java)
130- .hasMessage(" 취소할 수 없는 상태입니다." )
138+ .isInstanceOf(CoreException ::class .java)
139+ .extracting { it as CoreException }
140+ .extracting(CoreException ::type)
141+ .isEqualTo(OrderError .INVALID_STATUS_TRANSITION )
131142 }
132143 }
133144
@@ -149,14 +160,16 @@ class OrderTest {
149160 }
150161
151162 @Test
152- fun `COMPLETED 상태가 아니면 IllegalStateException이 발생한다` () {
163+ fun `COMPLETED 상태가 아니면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
153164 // given
154165 val order = OrderFixtures .anOrder()
155166
156167 // when, then
157168 assertThatThrownBy { order.returnOrder() }
158- .isInstanceOf(IllegalStateException ::class .java)
159- .hasMessage(" 반품할 수 없는 상태입니다." )
169+ .isInstanceOf(CoreException ::class .java)
170+ .extracting { it as CoreException }
171+ .extracting(CoreException ::type)
172+ .isEqualTo(OrderError .INVALID_STATUS_TRANSITION )
160173 }
161174 }
162175}
0 commit comments