@@ -1075,5 +1075,189 @@ medusaIntegrationTestRunner({
1075
1075
} )
1076
1076
} )
1077
1077
} )
1078
+
1079
+ describe ( "POST /orders/:id/credit-lines" , ( ) => {
1080
+ beforeEach ( async ( ) => {
1081
+ const inventoryItemOverride = (
1082
+ await api . post (
1083
+ `/admin/inventory-items` ,
1084
+ { sku : "test-variant" , requires_shipping : false } ,
1085
+ adminHeaders
1086
+ )
1087
+ ) . data . inventory_item
1088
+
1089
+ seeder = await createOrderSeeder ( {
1090
+ api,
1091
+ container : getContainer ( ) ,
1092
+ inventoryItemOverride,
1093
+ withoutShipping : true ,
1094
+ } )
1095
+ order = seeder . order
1096
+
1097
+ order = ( await api . get ( `/admin/orders/${ order . id } ` , adminHeaders ) ) . data
1098
+ . order
1099
+ } )
1100
+
1101
+ it ( "should successfully create credit lines" , async ( ) => {
1102
+ const error = await api
1103
+ . post (
1104
+ `/admin/orders/${ order . id } /credit-lines` ,
1105
+ {
1106
+ amount : - 106 ,
1107
+ reference : "order" ,
1108
+ reference_id : order . id ,
1109
+ } ,
1110
+ adminHeaders
1111
+ )
1112
+ . catch ( ( e ) => e )
1113
+
1114
+ expect ( error . response . status ) . toBe ( 400 )
1115
+ expect ( error . response . data . message ) . toBe (
1116
+ "Can only create positive credit lines if the order has a positive pending difference"
1117
+ )
1118
+
1119
+ const error2 = await api
1120
+ . post (
1121
+ `/admin/orders/${ order . id } /credit-lines` ,
1122
+ {
1123
+ amount : 10000 ,
1124
+ reference : "order" ,
1125
+ reference_id : order . id ,
1126
+ } ,
1127
+ adminHeaders
1128
+ )
1129
+ . catch ( ( e ) => e )
1130
+
1131
+ expect ( error2 . response . status ) . toBe ( 400 )
1132
+ expect ( error2 . response . data . message ) . toBe (
1133
+ "Cannot create more positive credit lines with amount more than the pending difference"
1134
+ )
1135
+
1136
+ const response = await api . post (
1137
+ `/admin/orders/${ order . id } /credit-lines` ,
1138
+ {
1139
+ amount : 106 ,
1140
+ reference : "order" ,
1141
+ reference_id : order . id ,
1142
+ } ,
1143
+ adminHeaders
1144
+ )
1145
+
1146
+ expect ( response . status ) . toBe ( 200 )
1147
+ expect ( response . data . order ) . toEqual (
1148
+ expect . objectContaining ( {
1149
+ id : order . id ,
1150
+ total : 0 ,
1151
+ subtotal : 100 ,
1152
+ summary : expect . objectContaining ( {
1153
+ current_order_total : 0 ,
1154
+ accounting_total : 0 ,
1155
+ pending_difference : 0 ,
1156
+ } ) ,
1157
+ } )
1158
+ )
1159
+
1160
+ await api . post (
1161
+ "/admin/order-edits" ,
1162
+ {
1163
+ order_id : order . id ,
1164
+ description : "Test" ,
1165
+ } ,
1166
+ adminHeaders
1167
+ )
1168
+
1169
+ const item = order . items [ 0 ]
1170
+
1171
+ let result = (
1172
+ await api . post (
1173
+ `/admin/order-edits/${ order . id } /items/item/${ item . id } ` ,
1174
+ { quantity : 0 } ,
1175
+ adminHeaders
1176
+ )
1177
+ ) . data . order_preview
1178
+
1179
+ result = (
1180
+ await api . post (
1181
+ `/admin/order-edits/${ order . id } /request` ,
1182
+ { } ,
1183
+ adminHeaders
1184
+ )
1185
+ ) . data . order_preview
1186
+
1187
+ result = (
1188
+ await api . post (
1189
+ `/admin/order-edits/${ order . id } /confirm` ,
1190
+ { } ,
1191
+ adminHeaders
1192
+ )
1193
+ ) . data . order_preview
1194
+
1195
+ result = ( await api . get ( `/admin/orders/${ order . id } ` , adminHeaders ) ) . data
1196
+ . order
1197
+
1198
+ const errorResponse = await api
1199
+ . post (
1200
+ `/admin/orders/${ order . id } /credit-lines` ,
1201
+ {
1202
+ amount : 106 ,
1203
+ reference : "order" ,
1204
+ reference_id : order . id ,
1205
+ } ,
1206
+ adminHeaders
1207
+ )
1208
+ . catch ( ( e ) => e )
1209
+
1210
+ expect ( errorResponse . response . status ) . toBe ( 400 )
1211
+ expect ( errorResponse . response . data . message ) . toBe (
1212
+ "Can only create negative credit lines if the order has a negative pending difference"
1213
+ )
1214
+
1215
+ const error3 = await api
1216
+ . post (
1217
+ `/admin/orders/${ order . id } /credit-lines` ,
1218
+ {
1219
+ amount : - 10000 ,
1220
+ reference : "order" ,
1221
+ reference_id : order . id ,
1222
+ } ,
1223
+ adminHeaders
1224
+ )
1225
+ . catch ( ( e ) => e )
1226
+
1227
+ expect ( error3 . response . status ) . toBe ( 400 )
1228
+ expect ( error3 . response . data . message ) . toBe (
1229
+ "Cannot create more negative credit lines with amount more than the pending difference"
1230
+ )
1231
+
1232
+ const response2 = await api . post (
1233
+ `/admin/orders/${ order . id } /credit-lines` ,
1234
+ {
1235
+ amount : - 106 ,
1236
+ reference : "order" ,
1237
+ reference_id : order . id ,
1238
+ } ,
1239
+ adminHeaders
1240
+ )
1241
+
1242
+ expect ( response2 . data . order . summary . pending_difference ) . toEqual ( 0 )
1243
+
1244
+ const response3 = await api
1245
+ . post (
1246
+ `/admin/orders/${ order . id } /credit-lines` ,
1247
+ {
1248
+ amount : - 106 ,
1249
+ reference : "order" ,
1250
+ reference_id : order . id ,
1251
+ } ,
1252
+ adminHeaders
1253
+ )
1254
+ . catch ( ( e ) => e )
1255
+
1256
+ expect ( response3 . response . status ) . toBe ( 400 )
1257
+ expect ( response3 . response . data . message ) . toBe (
1258
+ "Can only create credit lines if the order has a positive or negative pending difference"
1259
+ )
1260
+ } )
1261
+ } )
1078
1262
} ,
1079
1263
} )
0 commit comments