@labdigital/commercetools-mock 2.65.1 → 3.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -8
- package/dist/abstract-BKFcva6S.mjs +1044 -0
- package/dist/abstract-BKFcva6S.mjs.map +1 -0
- package/dist/config-BcNSzPZz.d.mts +1718 -0
- package/dist/index.d.mts +50 -1633
- package/dist/index.mjs +3771 -2654
- package/dist/index.mjs.map +1 -1
- package/dist/storage/sqlite.d.mts +59 -0
- package/dist/storage/sqlite.mjs +234 -0
- package/dist/storage/sqlite.mjs.map +1 -0
- package/package.json +26 -29
- package/src/ctMock.ts +125 -136
- package/src/helpers.ts +14 -6
- package/src/index.ts +5 -0
- package/src/lib/masking.ts +4 -5
- package/src/lib/product-review-statistics.test.ts +257 -294
- package/src/lib/review-statistics.ts +17 -4
- package/src/oauth/helpers.ts +7 -4
- package/src/oauth/server.test.ts +102 -62
- package/src/oauth/server.ts +215 -213
- package/src/oauth/store.ts +20 -6
- package/src/orderSearch.ts +3 -3
- package/src/product-projection-search.ts +38 -20
- package/src/product-search-availability.test.ts +31 -52
- package/src/product-search.ts +19 -10
- package/src/projectAPI.ts +6 -22
- package/src/repositories/abstract.ts +182 -48
- package/src/repositories/as-associate.test.ts +19 -19
- package/src/repositories/associate-role.ts +12 -23
- package/src/repositories/attribute-group.test.ts +23 -23
- package/src/repositories/attribute-group.ts +6 -4
- package/src/repositories/business-unit.test.ts +63 -57
- package/src/repositories/business-unit.ts +107 -55
- package/src/repositories/cart/actions.ts +96 -65
- package/src/repositories/cart/helpers.ts +15 -11
- package/src/repositories/cart/index.test.ts +136 -30
- package/src/repositories/cart/index.ts +76 -59
- package/src/repositories/cart-discount/actions.ts +12 -44
- package/src/repositories/cart-discount/index.ts +20 -8
- package/src/repositories/category/actions.ts +27 -27
- package/src/repositories/category/index.test.ts +13 -9
- package/src/repositories/category/index.ts +40 -23
- package/src/repositories/channel.test.ts +53 -51
- package/src/repositories/channel.ts +12 -22
- package/src/repositories/custom-object.ts +34 -25
- package/src/repositories/customer/actions.ts +47 -25
- package/src/repositories/customer/index.test.ts +11 -11
- package/src/repositories/customer/index.ts +65 -35
- package/src/repositories/customer-group.test.ts +44 -42
- package/src/repositories/customer-group.ts +12 -22
- package/src/repositories/discount-code/actions.ts +3 -19
- package/src/repositories/discount-code/index.ts +9 -4
- package/src/repositories/discount-group/index.ts +8 -3
- package/src/repositories/extension.test.ts +27 -27
- package/src/repositories/extension.ts +10 -5
- package/src/repositories/helpers.ts +126 -47
- package/src/repositories/inventory-entry/actions.ts +3 -24
- package/src/repositories/inventory-entry/index.ts +19 -11
- package/src/repositories/my-customer.ts +13 -12
- package/src/repositories/my-order.ts +5 -2
- package/src/repositories/order/actions.ts +89 -56
- package/src/repositories/order/index.test.ts +36 -31
- package/src/repositories/order/index.ts +83 -49
- package/src/repositories/order-edit.ts +8 -3
- package/src/repositories/payment/actions.ts +64 -44
- package/src/repositories/payment/helpers.ts +3 -3
- package/src/repositories/payment/index.ts +28 -12
- package/src/repositories/product/actions.ts +133 -98
- package/src/repositories/product/helpers.ts +29 -16
- package/src/repositories/product/index.ts +42 -25
- package/src/repositories/product-discount.ts +6 -4
- package/src/repositories/product-projection.ts +41 -21
- package/src/repositories/product-selection.ts +8 -15
- package/src/repositories/product-tailoring.ts +22 -3
- package/src/repositories/product-type.ts +45 -4
- package/src/repositories/project.ts +57 -13
- package/src/repositories/quote/actions.ts +5 -28
- package/src/repositories/quote/index.ts +29 -6
- package/src/repositories/quote-request/actions.ts +5 -28
- package/src/repositories/quote-request/index.test.ts +3 -3
- package/src/repositories/quote-request/index.ts +31 -11
- package/src/repositories/quote-staged/actions.ts +5 -28
- package/src/repositories/quote-staged/index.ts +22 -8
- package/src/repositories/recurrence-policy/index.ts +6 -4
- package/src/repositories/recurring-order/actions.ts +7 -32
- package/src/repositories/recurring-order/index.ts +8 -6
- package/src/repositories/review.test.ts +147 -142
- package/src/repositories/review.ts +31 -37
- package/src/repositories/shipping-method/actions.ts +11 -28
- package/src/repositories/shipping-method/index.ts +26 -15
- package/src/repositories/shopping-list/actions.ts +21 -31
- package/src/repositories/shopping-list/index.ts +44 -22
- package/src/repositories/standalone-price.ts +6 -4
- package/src/repositories/state.ts +15 -9
- package/src/repositories/store.ts +21 -32
- package/src/repositories/subscription.test.ts +22 -22
- package/src/repositories/subscription.ts +8 -3
- package/src/repositories/tax-category/index.ts +8 -3
- package/src/repositories/type/actions.ts +21 -3
- package/src/repositories/type/index.ts +5 -3
- package/src/repositories/zone.test.ts +112 -77
- package/src/repositories/zone.ts +5 -3
- package/src/schemas/generated/associate-role.ts +13 -0
- package/src/schemas/generated/attribute-group.ts +12 -0
- package/src/schemas/generated/business-unit.ts +38 -0
- package/src/schemas/generated/cart-discount.ts +33 -0
- package/src/schemas/generated/cart.ts +61 -0
- package/src/schemas/generated/category.ts +25 -0
- package/src/schemas/generated/channel.ts +21 -0
- package/src/schemas/generated/common.ts +1372 -0
- package/src/schemas/generated/custom-object.ts +11 -0
- package/src/schemas/generated/customer-group.ts +11 -0
- package/src/schemas/generated/customer.ts +47 -0
- package/src/schemas/generated/discount-code.ts +25 -0
- package/src/schemas/generated/discount-group.ts +13 -0
- package/src/schemas/generated/extension.ts +15 -0
- package/src/schemas/generated/index.ts +42 -0
- package/src/schemas/generated/inventory-entry.ts +20 -0
- package/src/schemas/generated/my-quote-request.ts +10 -0
- package/src/schemas/generated/order-edit.ts +18 -0
- package/src/schemas/generated/order-from-cart.ts +25 -0
- package/src/schemas/generated/payment.ts +30 -0
- package/src/schemas/generated/product-discount.ts +20 -0
- package/src/schemas/generated/product-selection.ts +18 -0
- package/src/schemas/generated/product-tailoring.ts +26 -0
- package/src/schemas/generated/product-type.ts +12 -0
- package/src/schemas/generated/product.ts +37 -0
- package/src/schemas/generated/quote-request.ts +19 -0
- package/src/schemas/generated/quote.ts +18 -0
- package/src/schemas/generated/recurrence-policy.ts +15 -0
- package/src/schemas/generated/recurring-order.ts +19 -0
- package/src/schemas/generated/review.ts +24 -0
- package/src/schemas/generated/shipping-method.ts +24 -0
- package/src/schemas/generated/shopping-list.ts +28 -0
- package/src/schemas/generated/staged-quote.ts +18 -0
- package/src/schemas/generated/standalone-price.ts +32 -0
- package/src/schemas/generated/state.ts +20 -0
- package/src/schemas/generated/store.ts +23 -0
- package/src/schemas/generated/subscription.ts +20 -0
- package/src/schemas/generated/tax-category.ts +12 -0
- package/src/schemas/generated/type.ts +17 -0
- package/src/schemas/generated/zone.ts +12 -0
- package/src/schemas/update-request.ts +3 -5
- package/src/server.ts +32 -4
- package/src/services/abstract.ts +207 -101
- package/src/services/as-associate-cart.test.ts +28 -36
- package/src/services/as-associate-cart.ts +15 -12
- package/src/services/as-associate-order.test.ts +33 -40
- package/src/services/as-associate-order.ts +15 -12
- package/src/services/as-associate-quote-request.ts +15 -12
- package/src/services/as-associate-shopping-list.test.ts +25 -35
- package/src/services/as-associate-shopping-list.ts +15 -12
- package/src/services/as-associate.test.ts +21 -15
- package/src/services/as-associate.ts +23 -22
- package/src/services/associate-roles.test.ts +16 -22
- package/src/services/associate-roles.ts +2 -2
- package/src/services/attribute-group.test.ts +40 -44
- package/src/services/attribute-group.ts +2 -2
- package/src/services/business-units.test.ts +227 -163
- package/src/services/business-units.ts +2 -2
- package/src/services/cart-discount.test.ts +253 -187
- package/src/services/cart-discount.ts +2 -2
- package/src/services/cart.test.ts +833 -832
- package/src/services/cart.ts +31 -12
- package/src/services/category.test.ts +208 -130
- package/src/services/category.ts +2 -2
- package/src/services/channel.test.ts +39 -44
- package/src/services/channel.ts +2 -2
- package/src/services/custom-object.test.ts +103 -79
- package/src/services/custom-object.ts +106 -38
- package/src/services/customer-group.test.ts +39 -44
- package/src/services/customer-group.ts +2 -2
- package/src/services/customer.test.ts +357 -292
- package/src/services/customer.ts +70 -23
- package/src/services/discount-code.test.ts +57 -68
- package/src/services/discount-code.ts +2 -2
- package/src/services/discount-group.test.ts +111 -134
- package/src/services/discount-group.ts +2 -2
- package/src/services/draft-validation.test.ts +255 -0
- package/src/services/extension.test.ts +39 -44
- package/src/services/extension.ts +2 -2
- package/src/services/inventory-entry.test.ts +106 -87
- package/src/services/inventory-entry.ts +2 -2
- package/src/services/my-business-unit.test.ts +82 -112
- package/src/services/my-business-unit.ts +25 -19
- package/src/services/my-cart.test.ts +46 -41
- package/src/services/my-cart.ts +32 -28
- package/src/services/my-customer.test.ts +153 -88
- package/src/services/my-customer.ts +130 -61
- package/src/services/my-order.ts +15 -12
- package/src/services/my-payment.test.ts +30 -24
- package/src/services/my-payment.ts +2 -2
- package/src/services/my-shopping-list.ts +2 -2
- package/src/services/order.test.ts +332 -276
- package/src/services/order.ts +45 -27
- package/src/services/payment.test.ts +31 -29
- package/src/services/payment.ts +2 -2
- package/src/services/product-discount.test.ts +39 -46
- package/src/services/product-discount.ts +2 -2
- package/src/services/product-projection.test.ts +176 -166
- package/src/services/product-projection.ts +31 -15
- package/src/services/product-selection.test.ts +17 -9
- package/src/services/product-selection.ts +2 -2
- package/src/services/product-type.test.ts +80 -21
- package/src/services/product-type.ts +2 -2
- package/src/services/product.test.ts +569 -534
- package/src/services/product.ts +14 -7
- package/src/services/project.test.ts +22 -12
- package/src/services/project.ts +28 -13
- package/src/services/quote-request.test.ts +36 -39
- package/src/services/quote-request.ts +2 -2
- package/src/services/quote-staged.ts +2 -2
- package/src/services/quote.ts +2 -2
- package/src/services/recurrence-policy.test.ts +114 -139
- package/src/services/recurrence-policy.ts +2 -2
- package/src/services/recurring-order.test.ts +149 -194
- package/src/services/recurring-order.ts +2 -2
- package/src/services/reviews.test.ts +127 -106
- package/src/services/reviews.ts +2 -2
- package/src/services/shipping-method.test.ts +96 -125
- package/src/services/shipping-method.ts +24 -12
- package/src/services/shopping-list.test.ts +183 -141
- package/src/services/shopping-list.ts +2 -2
- package/src/services/standalone-price.test.ts +60 -46
- package/src/services/standalone-price.ts +2 -2
- package/src/services/state.test.ts +20 -25
- package/src/services/state.ts +2 -2
- package/src/services/store.test.ts +26 -45
- package/src/services/store.ts +2 -2
- package/src/services/subscription.test.ts +39 -44
- package/src/services/subscription.ts +2 -2
- package/src/services/tax-category.test.ts +33 -36
- package/src/services/tax-category.ts +2 -2
- package/src/services/type.test.ts +45 -44
- package/src/services/type.ts +2 -2
- package/src/services/zone.test.ts +40 -44
- package/src/services/zone.ts +2 -2
- package/src/shipping.ts +41 -11
- package/src/storage/abstract.ts +248 -17
- package/src/storage/in-memory.ts +147 -290
- package/src/storage/sqlite.ts +429 -0
- package/src/storage/storage-map.ts +75 -0
- package/src/storage/storage.test-helpers.ts +97 -0
- package/src/storage/storage.test.ts +802 -0
- package/src/testing/associate-role.ts +28 -0
- package/src/testing/attribute-group.ts +27 -0
- package/src/testing/business-unit.ts +9 -8
- package/src/testing/cart-discount.ts +34 -0
- package/src/testing/cart.ts +20 -0
- package/src/testing/category.ts +25 -0
- package/src/testing/channel.ts +23 -0
- package/src/testing/custom-object.ts +27 -0
- package/src/testing/customer-group.ts +26 -0
- package/src/testing/customer.ts +36 -33
- package/src/testing/discount-code.ts +29 -0
- package/src/testing/discount-group.ts +27 -0
- package/src/testing/extension.ts +32 -0
- package/src/testing/index.ts +33 -0
- package/src/testing/inventory-entry.ts +26 -0
- package/src/testing/order.ts +27 -0
- package/src/testing/payment.ts +23 -0
- package/src/testing/product-discount.ts +33 -0
- package/src/testing/product-selection.ts +28 -0
- package/src/testing/product-type.ts +27 -0
- package/src/testing/product.ts +38 -0
- package/src/testing/quote-request.ts +29 -0
- package/src/testing/recurrence-policy.ts +33 -0
- package/src/testing/recurring-order.ts +32 -0
- package/src/testing/review.ts +24 -0
- package/src/testing/shipping-method.ts +31 -0
- package/src/testing/shopping-list.ts +25 -0
- package/src/testing/standalone-price.ts +31 -0
- package/src/testing/state.ts +21 -0
- package/src/testing/store.ts +26 -0
- package/src/testing/subscription.ts +38 -0
- package/src/testing/tax-category.ts +27 -0
- package/src/testing/type.ts +9 -6
- package/src/testing/zone.ts +22 -0
- package/src/validate.test.ts +122 -0
- package/src/validate.ts +78 -7
- package/src/.env +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
CustomerReference,
|
|
3
|
+
InvalidOperationError,
|
|
3
4
|
Payment,
|
|
4
5
|
PaymentAddInterfaceInteractionAction,
|
|
5
6
|
PaymentAddTransactionAction,
|
|
@@ -25,11 +26,14 @@ import type {
|
|
|
25
26
|
PaymentSetStatusInterfaceTextAction,
|
|
26
27
|
PaymentSetTransactionCustomFieldAction,
|
|
27
28
|
PaymentSetTransactionCustomTypeAction,
|
|
29
|
+
PaymentSetTransactionInterfaceIdAction,
|
|
28
30
|
PaymentTransitionStateAction,
|
|
29
31
|
PaymentUpdateAction,
|
|
32
|
+
ReferencedResourceNotFoundError,
|
|
30
33
|
State,
|
|
31
34
|
Transaction,
|
|
32
35
|
} from "@commercetools/platform-sdk";
|
|
36
|
+
import { CommercetoolsError } from "#src/exceptions.ts";
|
|
33
37
|
import type { Writable } from "#src/types.ts";
|
|
34
38
|
import type { RepositoryContext, UpdateHandlerInterface } from "../abstract.ts";
|
|
35
39
|
import { AbstractUpdateHandler } from "../abstract.ts";
|
|
@@ -44,24 +48,31 @@ export class PaymentUpdateHandler
|
|
|
44
48
|
extends AbstractUpdateHandler
|
|
45
49
|
implements UpdateHandlerInterface<Payment, PaymentUpdateAction>
|
|
46
50
|
{
|
|
47
|
-
addInterfaceInteraction(
|
|
51
|
+
async addInterfaceInteraction(
|
|
48
52
|
context: RepositoryContext,
|
|
49
53
|
resource: Writable<Payment>,
|
|
50
54
|
{ type, fields }: PaymentAddInterfaceInteractionAction,
|
|
51
55
|
) {
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
const customFields = await createCustomFields(
|
|
57
|
+
{ type, fields },
|
|
58
|
+
context.projectKey,
|
|
59
|
+
this._storage,
|
|
54
60
|
);
|
|
61
|
+
resource.interfaceInteractions.push(customFields!);
|
|
55
62
|
}
|
|
56
63
|
|
|
57
|
-
addTransaction(
|
|
64
|
+
async addTransaction(
|
|
58
65
|
context: RepositoryContext,
|
|
59
66
|
resource: Writable<Payment>,
|
|
60
67
|
{ transaction }: PaymentAddTransactionAction,
|
|
61
68
|
) {
|
|
62
69
|
resource.transactions = [
|
|
63
70
|
...resource.transactions,
|
|
64
|
-
transactionFromTransactionDraft(
|
|
71
|
+
await transactionFromTransactionDraft(
|
|
72
|
+
context,
|
|
73
|
+
this._storage,
|
|
74
|
+
transaction,
|
|
75
|
+
),
|
|
65
76
|
];
|
|
66
77
|
}
|
|
67
78
|
|
|
@@ -89,6 +100,19 @@ export class PaymentUpdateHandler
|
|
|
89
100
|
}
|
|
90
101
|
}
|
|
91
102
|
|
|
103
|
+
setTransactionInterfaceId(
|
|
104
|
+
_context: RepositoryContext,
|
|
105
|
+
resource: Writable<Payment>,
|
|
106
|
+
{ transactionId, interfaceId }: PaymentSetTransactionInterfaceIdAction,
|
|
107
|
+
) {
|
|
108
|
+
const transaction = resource.transactions.find(
|
|
109
|
+
(e: Transaction) => e.id === transactionId,
|
|
110
|
+
);
|
|
111
|
+
if (transaction) {
|
|
112
|
+
transaction.interfaceId = interfaceId;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
92
116
|
changeTransactionState(
|
|
93
117
|
_context: RepositoryContext,
|
|
94
118
|
resource: Writable<Payment>,
|
|
@@ -126,13 +150,13 @@ export class PaymentUpdateHandler
|
|
|
126
150
|
resource.customer = undefined;
|
|
127
151
|
}
|
|
128
152
|
|
|
129
|
-
setCustomer(
|
|
153
|
+
async setCustomer(
|
|
130
154
|
_context: RepositoryContext,
|
|
131
155
|
resource: Writable<Payment>,
|
|
132
156
|
{ customer }: PaymentSetCustomerAction,
|
|
133
157
|
) {
|
|
134
158
|
if (customer) {
|
|
135
|
-
const c = getReferenceFromResourceIdentifier<CustomerReference>(
|
|
159
|
+
const c = await getReferenceFromResourceIdentifier<CustomerReference>(
|
|
136
160
|
customer,
|
|
137
161
|
_context.projectKey,
|
|
138
162
|
this._storage,
|
|
@@ -147,37 +171,15 @@ export class PaymentUpdateHandler
|
|
|
147
171
|
resource: Payment,
|
|
148
172
|
{ name, value }: PaymentSetCustomFieldAction,
|
|
149
173
|
) {
|
|
150
|
-
|
|
151
|
-
throw new Error("Resource has no custom field");
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
resource.custom.fields[name] = value;
|
|
174
|
+
this._setCustomFieldValues(resource, { name, value });
|
|
155
175
|
}
|
|
156
176
|
|
|
157
|
-
setCustomType(
|
|
177
|
+
async setCustomType(
|
|
158
178
|
context: RepositoryContext,
|
|
159
179
|
resource: Writable<Payment>,
|
|
160
180
|
{ type, fields }: PaymentSetCustomTypeAction,
|
|
161
181
|
) {
|
|
162
|
-
|
|
163
|
-
resource.custom = undefined;
|
|
164
|
-
} else {
|
|
165
|
-
const resolvedType = this._storage.getByResourceIdentifier(
|
|
166
|
-
context.projectKey,
|
|
167
|
-
type,
|
|
168
|
-
);
|
|
169
|
-
if (!resolvedType) {
|
|
170
|
-
throw new Error(`Type ${type} not found`);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
resource.custom = {
|
|
174
|
-
type: {
|
|
175
|
-
typeId: "type",
|
|
176
|
-
id: resolvedType.id,
|
|
177
|
-
},
|
|
178
|
-
fields: fields ?? {},
|
|
179
|
-
};
|
|
180
|
-
}
|
|
182
|
+
await this._setCustomType(context, resource, { type, fields });
|
|
181
183
|
}
|
|
182
184
|
|
|
183
185
|
setInterfaceId(
|
|
@@ -246,14 +248,17 @@ export class PaymentUpdateHandler
|
|
|
246
248
|
);
|
|
247
249
|
if (transaction) {
|
|
248
250
|
if (!transaction.custom) {
|
|
249
|
-
throw new
|
|
251
|
+
throw new CommercetoolsError<InvalidOperationError>({
|
|
252
|
+
code: "InvalidOperation",
|
|
253
|
+
message: "Transaction has no custom field",
|
|
254
|
+
});
|
|
250
255
|
}
|
|
251
256
|
|
|
252
257
|
transaction.custom.fields[name] = value;
|
|
253
258
|
}
|
|
254
259
|
}
|
|
255
260
|
|
|
256
|
-
setTransactionCustomType(
|
|
261
|
+
async setTransactionCustomType(
|
|
257
262
|
context: RepositoryContext,
|
|
258
263
|
resource: Writable<Payment>,
|
|
259
264
|
{ transactionId, type, fields }: PaymentSetTransactionCustomTypeAction,
|
|
@@ -265,12 +270,16 @@ export class PaymentUpdateHandler
|
|
|
265
270
|
if (!type) {
|
|
266
271
|
transaction.custom = undefined;
|
|
267
272
|
} else {
|
|
268
|
-
const resolvedType = this._storage.getByResourceIdentifier(
|
|
273
|
+
const resolvedType = await this._storage.getByResourceIdentifier(
|
|
269
274
|
context.projectKey,
|
|
270
275
|
type,
|
|
271
276
|
);
|
|
272
277
|
if (!resolvedType) {
|
|
273
|
-
throw new
|
|
278
|
+
throw new CommercetoolsError<ReferencedResourceNotFoundError>({
|
|
279
|
+
code: "ReferencedResourceNotFound",
|
|
280
|
+
message: `Type ${type} not found`,
|
|
281
|
+
typeId: "type",
|
|
282
|
+
});
|
|
274
283
|
}
|
|
275
284
|
|
|
276
285
|
transaction.custom = {
|
|
@@ -284,18 +293,22 @@ export class PaymentUpdateHandler
|
|
|
284
293
|
}
|
|
285
294
|
}
|
|
286
295
|
|
|
287
|
-
transitionState(
|
|
296
|
+
async transitionState(
|
|
288
297
|
context: RepositoryContext,
|
|
289
298
|
resource: Writable<Payment>,
|
|
290
299
|
{ state }: PaymentTransitionStateAction,
|
|
291
300
|
) {
|
|
292
|
-
const stateObj = this._storage.getByResourceIdentifier(
|
|
301
|
+
const stateObj = (await this._storage.getByResourceIdentifier(
|
|
293
302
|
context.projectKey,
|
|
294
303
|
state,
|
|
295
|
-
) as State | null;
|
|
304
|
+
)) as State | null;
|
|
296
305
|
|
|
297
306
|
if (!stateObj) {
|
|
298
|
-
throw new
|
|
307
|
+
throw new CommercetoolsError<ReferencedResourceNotFoundError>({
|
|
308
|
+
code: "ReferencedResourceNotFound",
|
|
309
|
+
message: `State ${state} not found`,
|
|
310
|
+
typeId: "state",
|
|
311
|
+
});
|
|
299
312
|
}
|
|
300
313
|
|
|
301
314
|
resource.paymentStatus.state = {
|
|
@@ -339,13 +352,16 @@ export class PaymentUpdateHandler
|
|
|
339
352
|
{ name, value }: PaymentSetMethodInfoCustomFieldAction,
|
|
340
353
|
) {
|
|
341
354
|
if (!resource.paymentMethodInfo.custom) {
|
|
342
|
-
throw new
|
|
355
|
+
throw new CommercetoolsError<InvalidOperationError>({
|
|
356
|
+
code: "InvalidOperation",
|
|
357
|
+
message: "PaymentMethodInfo has no custom field",
|
|
358
|
+
});
|
|
343
359
|
}
|
|
344
360
|
|
|
345
361
|
resource.paymentMethodInfo.custom.fields[name] = value;
|
|
346
362
|
}
|
|
347
363
|
|
|
348
|
-
setMethodInfoCustomType(
|
|
364
|
+
async setMethodInfoCustomType(
|
|
349
365
|
context: RepositoryContext,
|
|
350
366
|
resource: Writable<Payment>,
|
|
351
367
|
{ type, fields }: PaymentSetMethodInfoCustomTypeAction,
|
|
@@ -353,12 +369,16 @@ export class PaymentUpdateHandler
|
|
|
353
369
|
if (!type) {
|
|
354
370
|
resource.paymentMethodInfo.custom = undefined;
|
|
355
371
|
} else {
|
|
356
|
-
const resolvedType = this._storage.getByResourceIdentifier(
|
|
372
|
+
const resolvedType = await this._storage.getByResourceIdentifier(
|
|
357
373
|
context.projectKey,
|
|
358
374
|
type,
|
|
359
375
|
);
|
|
360
376
|
if (!resolvedType) {
|
|
361
|
-
throw new
|
|
377
|
+
throw new CommercetoolsError<ReferencedResourceNotFoundError>({
|
|
378
|
+
code: "ReferencedResourceNotFound",
|
|
379
|
+
message: `Type ${type} not found`,
|
|
380
|
+
typeId: "type",
|
|
381
|
+
});
|
|
362
382
|
}
|
|
363
383
|
|
|
364
384
|
resource.paymentMethodInfo.custom = {
|
|
@@ -7,14 +7,14 @@ import type { AbstractStorage } from "#src/storage/index.ts";
|
|
|
7
7
|
import type { RepositoryContext } from "../abstract.ts";
|
|
8
8
|
import { createCentPrecisionMoney, createCustomFields } from "../helpers.ts";
|
|
9
9
|
|
|
10
|
-
export const transactionFromTransactionDraft = (
|
|
10
|
+
export const transactionFromTransactionDraft = async (
|
|
11
11
|
context: RepositoryContext,
|
|
12
12
|
storage: AbstractStorage,
|
|
13
13
|
draft: TransactionDraft,
|
|
14
|
-
): Transaction => ({
|
|
14
|
+
): Promise<Transaction> => ({
|
|
15
15
|
...draft,
|
|
16
16
|
id: uuidv4(),
|
|
17
17
|
amount: createCentPrecisionMoney(draft.amount),
|
|
18
|
-
custom: createCustomFields(draft.custom, context.projectKey, storage),
|
|
18
|
+
custom: await createCustomFields(draft.custom, context.projectKey, storage),
|
|
19
19
|
state: draft.state ?? "Initial", // Documented as default
|
|
20
20
|
});
|
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
} from "@commercetools/platform-sdk";
|
|
6
6
|
import type { Config } from "#src/config.ts";
|
|
7
7
|
import { getBaseResourceProperties } from "#src/helpers.ts";
|
|
8
|
+
import { PaymentDraftSchema } from "#src/schemas/generated/payment.ts";
|
|
8
9
|
import type { RepositoryContext } from "../abstract.ts";
|
|
9
10
|
import { AbstractResourceRepository } from "../abstract.ts";
|
|
10
11
|
import {
|
|
@@ -19,11 +20,31 @@ export class PaymentRepository extends AbstractResourceRepository<"payment"> {
|
|
|
19
20
|
constructor(config: Config) {
|
|
20
21
|
super("payment", config);
|
|
21
22
|
this.actions = new PaymentUpdateHandler(this._storage);
|
|
23
|
+
this.draftSchema = PaymentDraftSchema;
|
|
22
24
|
}
|
|
23
25
|
|
|
24
|
-
create(
|
|
26
|
+
async create(
|
|
27
|
+
context: RepositoryContext,
|
|
28
|
+
draft: PaymentDraft,
|
|
29
|
+
): Promise<Payment> {
|
|
30
|
+
const transactions = await Promise.all(
|
|
31
|
+
(draft.transactions || []).map((t) =>
|
|
32
|
+
transactionFromTransactionDraft(context, this._storage, t),
|
|
33
|
+
),
|
|
34
|
+
);
|
|
35
|
+
const interfaceInteractions = await Promise.all(
|
|
36
|
+
(draft.interfaceInteractions || []).map(async (interaction) => {
|
|
37
|
+
const customFields = await createCustomFields(
|
|
38
|
+
interaction,
|
|
39
|
+
context.projectKey,
|
|
40
|
+
this._storage,
|
|
41
|
+
);
|
|
42
|
+
return customFields!;
|
|
43
|
+
}),
|
|
44
|
+
);
|
|
45
|
+
|
|
25
46
|
const resource: Payment = {
|
|
26
|
-
...getBaseResourceProperties(),
|
|
47
|
+
...getBaseResourceProperties(context.clientId),
|
|
27
48
|
key: draft.key,
|
|
28
49
|
amountPlanned: createCentPrecisionMoney(draft.amountPlanned),
|
|
29
50
|
paymentMethodInfo: { ...draft.paymentMethodInfo!, custom: undefined },
|
|
@@ -31,7 +52,7 @@ export class PaymentRepository extends AbstractResourceRepository<"payment"> {
|
|
|
31
52
|
? {
|
|
32
53
|
...draft.paymentStatus,
|
|
33
54
|
state: draft.paymentStatus.state
|
|
34
|
-
? getReferenceFromResourceIdentifier<StateReference>(
|
|
55
|
+
? await getReferenceFromResourceIdentifier<StateReference>(
|
|
35
56
|
draft.paymentStatus.state,
|
|
36
57
|
context.projectKey,
|
|
37
58
|
this._storage,
|
|
@@ -39,20 +60,15 @@ export class PaymentRepository extends AbstractResourceRepository<"payment"> {
|
|
|
39
60
|
: undefined,
|
|
40
61
|
}
|
|
41
62
|
: {},
|
|
42
|
-
transactions
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
interfaceInteractions: (draft.interfaceInteractions || []).map(
|
|
46
|
-
(interaction) =>
|
|
47
|
-
createCustomFields(interaction, context.projectKey, this._storage)!,
|
|
48
|
-
),
|
|
49
|
-
custom: createCustomFields(
|
|
63
|
+
transactions,
|
|
64
|
+
interfaceInteractions,
|
|
65
|
+
custom: await createCustomFields(
|
|
50
66
|
draft.custom,
|
|
51
67
|
context.projectKey,
|
|
52
68
|
this._storage,
|
|
53
69
|
),
|
|
54
70
|
};
|
|
55
71
|
|
|
56
|
-
return this.saveNew(context, resource);
|
|
72
|
+
return await this.saveNew(context, resource);
|
|
57
73
|
}
|
|
58
74
|
}
|