1
1
package com.nilgil.commerce.order
2
2
3
+ import com.nilgil.commerce.common.error.CoreException
3
4
import org.assertj.core.api.Assertions.assertThat
4
5
import org.assertj.core.api.Assertions.assertThatThrownBy
5
6
import org.junit.jupiter.api.DisplayName
@@ -37,14 +38,17 @@ class OrderTest {
37
38
}
38
39
39
40
@Test
40
- fun `CREATED 상태가 아니면 IllegalStateException이 발생한다` () {
41
+ fun `CREATED 상태가 아니면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
41
42
// given
42
43
val order = OrderFixtures .anOrder()
43
44
order.pay(paymentId = 123L )
44
45
45
46
// when, then
46
47
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 )
48
52
}
49
53
}
50
54
@@ -65,13 +69,16 @@ class OrderTest {
65
69
}
66
70
67
71
@Test
68
- fun `PAID 상태가 아니면 IllegalStateException이 발생한다` () {
72
+ fun `PAID 상태가 아니면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
69
73
// given
70
74
val order = OrderFixtures .anOrder()
71
75
72
76
// when, then
73
77
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 )
75
82
}
76
83
}
77
84
@@ -104,20 +111,22 @@ class OrderTest {
104
111
}
105
112
106
113
@Test
107
- fun `COMPLETED 상태이면 IllegalStateException이 발생한다` () {
114
+ fun `COMPLETED 상태이면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
108
115
// given
109
116
val order = OrderFixtures .anOrder()
110
117
order.pay(123L )
111
118
order.complete()
112
119
113
120
// when, then
114
121
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 )
117
126
}
118
127
119
128
@Test
120
- fun `RETURNED 상태이면 IllegalStateException이 발생한다` () {
129
+ fun `RETURNED 상태이면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
121
130
// given
122
131
val order = OrderFixtures .anOrder()
123
132
order.pay(123L )
@@ -126,8 +135,10 @@ class OrderTest {
126
135
127
136
// when, then
128
137
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 )
131
142
}
132
143
}
133
144
@@ -149,14 +160,16 @@ class OrderTest {
149
160
}
150
161
151
162
@Test
152
- fun `COMPLETED 상태가 아니면 IllegalStateException이 발생한다` () {
163
+ fun `COMPLETED 상태가 아니면 INVALID_STATUS_TRANSITION 에러가 발생한다` () {
153
164
// given
154
165
val order = OrderFixtures .anOrder()
155
166
156
167
// when, then
157
168
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 )
160
173
}
161
174
}
162
175
}
0 commit comments