@labdigital/commercetools-mock 0.9.0 → 0.10.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.
Files changed (95) hide show
  1. package/README.md +8 -0
  2. package/dist/index.d.ts +18 -17
  3. package/dist/index.global.js +1751 -1664
  4. package/dist/index.global.js.map +1 -1
  5. package/dist/index.js +1773 -1684
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +1966 -1877
  8. package/dist/index.mjs.map +1 -1
  9. package/package.json +28 -20
  10. package/src/constants.ts +4 -2
  11. package/src/ctMock.ts +19 -84
  12. package/src/helpers.ts +9 -10
  13. package/src/index.test.ts +1 -1
  14. package/src/lib/haversine.ts +2 -2
  15. package/src/lib/masking.ts +3 -1
  16. package/src/lib/predicateParser.test.ts +16 -0
  17. package/src/lib/predicateParser.ts +94 -86
  18. package/src/lib/projectionSearchFilter.test.ts +28 -36
  19. package/src/lib/projectionSearchFilter.ts +86 -102
  20. package/src/oauth/store.ts +3 -3
  21. package/src/priceSelector.test.ts +18 -35
  22. package/src/priceSelector.ts +6 -9
  23. package/src/product-projection-search.ts +51 -57
  24. package/src/repositories/abstract.ts +85 -41
  25. package/src/repositories/cart-discount.ts +1 -1
  26. package/src/repositories/cart.ts +36 -31
  27. package/src/repositories/category.ts +17 -19
  28. package/src/repositories/channel.ts +1 -1
  29. package/src/repositories/custom-object.ts +35 -22
  30. package/src/repositories/customer-group.ts +1 -1
  31. package/src/repositories/customer.ts +39 -1
  32. package/src/repositories/discount-code.ts +1 -1
  33. package/src/repositories/errors.ts +9 -11
  34. package/src/repositories/extension.ts +13 -11
  35. package/src/repositories/helpers.ts +8 -13
  36. package/src/repositories/index.ts +59 -0
  37. package/src/repositories/inventory-entry.ts +1 -1
  38. package/src/repositories/order.ts +6 -6
  39. package/src/repositories/payment.ts +3 -3
  40. package/src/repositories/product-discount.ts +1 -1
  41. package/src/repositories/product-projection.ts +1 -0
  42. package/src/repositories/product-type.ts +29 -34
  43. package/src/repositories/product.ts +124 -80
  44. package/src/repositories/project.ts +10 -27
  45. package/src/repositories/shipping-method.ts +15 -17
  46. package/src/repositories/shopping-list.ts +2 -2
  47. package/src/repositories/state.ts +9 -9
  48. package/src/repositories/store.ts +2 -2
  49. package/src/repositories/subscription.ts +1 -1
  50. package/src/repositories/tax-category.ts +4 -4
  51. package/src/repositories/type.ts +12 -14
  52. package/src/repositories/zone.ts +5 -6
  53. package/src/server.ts +5 -0
  54. package/src/services/abstract.ts +44 -11
  55. package/src/services/cart-discount.ts +2 -3
  56. package/src/services/cart.test.ts +8 -10
  57. package/src/services/cart.ts +8 -11
  58. package/src/services/category.test.ts +1 -2
  59. package/src/services/category.ts +2 -3
  60. package/src/services/channel.ts +2 -3
  61. package/src/services/custom-object.test.ts +5 -5
  62. package/src/services/custom-object.ts +2 -3
  63. package/src/services/customer-group.ts +2 -3
  64. package/src/services/customer.test.ts +136 -0
  65. package/src/services/customer.ts +2 -3
  66. package/src/services/discount-code.ts +2 -3
  67. package/src/services/extension.ts +2 -3
  68. package/src/services/index.ts +74 -0
  69. package/src/services/inventory-entry.test.ts +8 -12
  70. package/src/services/inventory-entry.ts +2 -3
  71. package/src/services/my-cart.ts +3 -4
  72. package/src/services/my-customer.ts +2 -3
  73. package/src/services/my-order.ts +3 -4
  74. package/src/services/my-payment.ts +2 -3
  75. package/src/services/order.test.ts +4 -6
  76. package/src/services/order.ts +2 -3
  77. package/src/services/payment.ts +2 -3
  78. package/src/services/product-discount.ts +2 -3
  79. package/src/services/product-projection.test.ts +76 -8
  80. package/src/services/product-projection.ts +2 -3
  81. package/src/services/product-type.ts +2 -3
  82. package/src/services/product.test.ts +199 -89
  83. package/src/services/product.ts +2 -3
  84. package/src/services/project.ts +3 -3
  85. package/src/services/shipping-method.ts +2 -3
  86. package/src/services/shopping-list.ts +2 -3
  87. package/src/services/state.ts +2 -3
  88. package/src/services/store.test.ts +11 -2
  89. package/src/services/store.ts +2 -3
  90. package/src/services/subscription.ts +2 -3
  91. package/src/services/tax-category.ts +2 -3
  92. package/src/services/type.ts +2 -3
  93. package/src/services/zone.ts +2 -3
  94. package/src/storage.ts +23 -30
  95. package/src/types.ts +46 -6
package/README.md CHANGED
@@ -69,3 +69,11 @@ Implement the following:
69
69
  - Add new service to src/ctMock.ts ctMock.\_services
70
70
  - Add new service to src/storage.ts InMemoryStorage
71
71
  - Adjust src/types.ts RepositoryMap and possibly serviceTypes
72
+
73
+ ## Releasing
74
+
75
+ - Adjust the CHANGELOG.md
76
+ - Adjust package.json with the new version
77
+ - `git tag v1.2.3` and `git push --tags`
78
+ - In Github create a release for the new tag (which will trigger a publish to NPM)
79
+
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import express, { Router, Request, Response } from 'express';
2
2
  import * as ctp from '@commercetools/platform-sdk';
3
- import { Project, BaseResource, PagedQueryResponse, ResourceIdentifier, QueryParam, ProductProjectionPagedSearchResponse, Product, ProductProjection, FacetResults, TermFacetResult, FilteredFacetResult, RangeFacetResult, ProductDraft, ReferenceTypeId, ShoppingListDraft, ShoppingList, CartDraft, Cart, CartAddLineItemAction, CartRemoveLineItemAction, CartSetBillingAddressAction, CartSetShippingMethodAction, CartSetCountryAction, CartSetCustomerEmailAction, CartSetCustomFieldAction, CartSetCustomTypeAction, CartSetLocaleAction, CartSetShippingAddressAction, LineItemDraft, LineItem, CustomerDraft, Customer, CustomerChangeEmailAction, CustomObjectDraft, CustomObject, InventoryEntryDraft, InventoryEntry, InventoryEntryChangeQuantityAction, InventoryEntrySetExpectedDeliveryAction, InventoryEntrySetCustomFieldAction, InventoryEntrySetCustomTypeAction, InventoryEntrySetRestockableInDaysAction, OrderFromCartDraft, Order, CartReference, OrderImportDraft, OrderAddPaymentAction, OrderChangeOrderStateAction, OrderChangePaymentStateAction, OrderTransitionStateAction, OrderSetBillingAddressAction, OrderSetCustomerEmailAction, OrderSetCustomFieldAction, OrderSetCustomTypeAction, OrderSetLocaleAction, OrderSetOrderNumberAction, OrderSetShippingAddressAction, OrderSetStoreAction, PaymentDraft, Payment, TransactionDraft, PaymentSetCustomFieldAction, PaymentSetCustomTypeAction, PaymentAddTransactionAction, PaymentChangeTransactionStateAction, PaymentTransitionStateAction, ProductPublishAction, ProductSetAttributeAction, ProductTypeDraft, ProductType, AttributeDefinitionDraft, AttributeDefinition, ProductTypeUpdateAction, ShippingMethodDraft, ShippingMethod, ShippingMethodUpdateAction, StateDraft, State, StateUpdateAction, TaxCategoryDraft, TaxCategory, TaxCategoryUpdateAction, ProductDiscountDraft, ProductDiscount, ProductDiscountUpdateAction, UpdateAction } from '@commercetools/platform-sdk';
3
+ import { Project, BaseResource, PagedQueryResponse, ResourceIdentifier, QueryParam, ProductProjectionPagedSearchResponse, Product, ProductProjection, FacetResults, TermFacetResult, FilteredFacetResult, RangeFacetResult, ProductDraft, ReferenceTypeId, ShoppingListDraft, ShoppingList, CartDraft, Cart, CartAddLineItemAction, CartRemoveLineItemAction, CartSetBillingAddressAction, CartSetShippingMethodAction, CartSetCountryAction, CartSetCustomerEmailAction, CartSetCustomFieldAction, CartSetCustomTypeAction, CartSetLocaleAction, CartSetShippingAddressAction, LineItemDraft, LineItem, CustomerDraft, Customer, CustomerChangeEmailAction, CustomerSetAuthenticationModeAction, CustomObjectDraft, CustomObject, InventoryEntryDraft, InventoryEntry, InventoryEntryChangeQuantityAction, InventoryEntrySetExpectedDeliveryAction, InventoryEntrySetCustomFieldAction, InventoryEntrySetCustomTypeAction, InventoryEntrySetRestockableInDaysAction, OrderFromCartDraft, Order, CartReference, OrderImportDraft, OrderAddPaymentAction, OrderChangeOrderStateAction, OrderChangePaymentStateAction, OrderTransitionStateAction, OrderSetBillingAddressAction, OrderSetCustomerEmailAction, OrderSetCustomFieldAction, OrderSetCustomTypeAction, OrderSetLocaleAction, OrderSetOrderNumberAction, OrderSetShippingAddressAction, OrderSetStoreAction, PaymentDraft, Payment, TransactionDraft, PaymentSetCustomFieldAction, PaymentSetCustomTypeAction, PaymentAddTransactionAction, PaymentChangeTransactionStateAction, PaymentTransitionStateAction, ProductUpdateAction, ProductTypeDraft, ProductType, AttributeDefinitionDraft, AttributeDefinition, ProductTypeUpdateAction, ShippingMethodDraft, ShippingMethod, ShippingMethodUpdateAction, StateDraft, State, StateUpdateAction, TaxCategoryDraft, TaxCategory, TaxCategoryUpdateAction, ProductDiscountDraft, ProductDiscount, ProductDiscountUpdateAction, UpdateAction } from '@commercetools/platform-sdk';
4
4
  import { ParsedQs } from 'qs';
5
5
 
6
6
  declare type GetParams$1 = {
@@ -17,7 +17,6 @@ declare type QueryParams$1 = {
17
17
  };
18
18
  declare abstract class AbstractStorage {
19
19
  abstract clear(): void;
20
- abstract assertStorage(typeId: RepositoryTypes): void;
21
20
  abstract all<RT extends RepositoryTypes>(projectKey: string, typeId: RT): Array<ResourceMap[RT]>;
22
21
  abstract add<RT extends RepositoryTypes>(projectKey: string, typeId: RT, obj: ResourceMap[RT]): void;
23
22
  abstract get<RT extends RepositoryTypes>(projectKey: string, typeId: RT, id: string, params?: GetParams$1): ResourceMap[RT] | null;
@@ -72,16 +71,16 @@ declare class ProductProjectionSearch {
72
71
  protected _storage: AbstractStorage;
73
72
  constructor(storage: AbstractStorage);
74
73
  search(projectKey: string, params: ProductProjectionSearchParams): ProductProjectionPagedSearchResponse;
75
- transform(product: Product): ProductProjection;
76
- getFacets(params: ProductProjectionSearchParams, products: Product[]): FacetResults;
74
+ transform(product: Product, staged: boolean): ProductProjection | null;
75
+ getFacets(params: ProductProjectionSearchParams, products: ProductProjection[]): FacetResults;
77
76
  /**
78
77
  * TODO: This implemention needs the following additional features:
79
78
  * - counting products
80
79
  * - correct dataType
81
80
  */
82
- termFacet(facet: string, products: Product[], staged: boolean): TermFacetResult;
83
- filterFacet(source: string, filters: FilterExpression[] | undefined, products: Product[], staged: boolean): FilteredFacetResult;
84
- rangeFacet(source: string, ranges: RangeExpression[] | undefined, products: Product[], staged: boolean): RangeFacetResult;
81
+ termFacet(facet: string, products: ProductProjection[]): TermFacetResult;
82
+ filterFacet(source: string, filters: FilterExpression[] | undefined, products: ProductProjection[]): FilteredFacetResult;
83
+ rangeFacet(source: string, ranges: RangeExpression[] | undefined, products: ProductProjection[]): RangeFacetResult;
85
84
  }
86
85
 
87
86
  declare class ProductProjectionRepository extends AbstractResourceRepository {
@@ -109,8 +108,8 @@ declare abstract class AbstractService {
109
108
  get(request: Request, response: Response): Response<any, Record<string, any>>;
110
109
  getWithId(request: Request, response: Response): Response<any, Record<string, any>>;
111
110
  getWithKey(request: Request, response: Response): Response<any, Record<string, any>>;
112
- deletewithId(request: Request, response: Response): Response<any, Record<string, any>>;
113
- deletewithKey(request: Request, response: Response): Response<any, Record<string, any>>;
111
+ deleteWithId(request: Request, response: Response): Response<any, Record<string, any>>;
112
+ deleteWithKey(request: Request, response: Response): Response<any, Record<string, any>>;
114
113
  post(request: Request, response: Response): Response<any, Record<string, any>>;
115
114
  postWithId(request: Request, response: Response): Response<any, Record<string, any>>;
116
115
  postWithKey(request: Request, response: Response): Response<any, Record<string, any>>;
@@ -143,6 +142,7 @@ declare class CustomerRepository extends AbstractResourceRepository {
143
142
  getMe(context: RepositoryContext): Customer | undefined;
144
143
  actions: {
145
144
  changeEmail: (_context: RepositoryContext, resource: Writable<Customer>, { email }: CustomerChangeEmailAction) => void;
145
+ setAuthenticationMode: (_context: RepositoryContext, resource: Writable<Customer>, { authMode, password }: CustomerSetAuthenticationModeAction) => void;
146
146
  };
147
147
  }
148
148
 
@@ -212,10 +212,7 @@ declare class PaymentRepository extends AbstractResourceRepository {
212
212
  declare class ProductRepository extends AbstractResourceRepository {
213
213
  getTypeId(): ReferenceTypeId;
214
214
  create(context: RepositoryContext, draft: ProductDraft): Product;
215
- actions: {
216
- publish: (context: RepositoryContext, resource: Writable<Product>, { scope }: ProductPublishAction) => void;
217
- setAttribute: (context: RepositoryContext, resource: Writable<Product>, { variantId, sku, name, value, staged }: ProductSetAttributeAction) => void;
218
- };
215
+ actions: Partial<Record<ProductUpdateAction['action'], (context: RepositoryContext, resource: Writable<Product>, action: any) => void>>;
219
216
  }
220
217
 
221
218
  declare class ProductTypeRepository extends AbstractResourceRepository {
@@ -264,6 +261,7 @@ declare type ServiceTypes = RepositoryTypes | 'my-cart' | 'my-order' | 'my-payme
264
261
  declare type Services = Partial<{
265
262
  [index in ServiceTypes]: AbstractService;
266
263
  }>;
264
+ declare type Resource = ctp.BaseResource | ctp.Cart | ctp.CartDiscount | ctp.Category | ctp.Channel | ctp.Customer | ctp.CustomerGroup | ctp.DiscountCode | ctp.Extension | ctp.InventoryEntry | ctp.CustomObject | ctp.Order | ctp.OrderEdit | ctp.Payment | ctp.Product | ctp.Project | ctp.ProductDiscount | ctp.ProductProjection | ctp.ProductSelection | ctp.StandalonePrice | ctp.ProductType | ctp.Review | ctp.ShippingMethod | ctp.ShoppingList | ctp.StandalonePrice | ctp.State | ctp.Store | ctp.Subscription | ctp.TaxCategory | ctp.Type | ctp.Zone;
267
265
  declare type ResourceMap = {
268
266
  cart: ctp.Cart;
269
267
  'cart-discount': ctp.CartDiscount;
@@ -345,9 +343,10 @@ declare abstract class AbstractRepository {
345
343
  protected _storage: AbstractStorage;
346
344
  protected actions: Partial<Record<any, (context: RepositoryContext, resource: any, action: any) => void>>;
347
345
  constructor(storage: AbstractStorage);
348
- abstract save({ projectKey }: RepositoryContext, resource: BaseResource | Project): void;
349
- processUpdateActions(context: RepositoryContext, resource: BaseResource | Project, actions: UpdateAction[]): BaseResource;
350
- postProcessResource(resource: BaseResource | null): BaseResource | null;
346
+ abstract saveNew({ projectKey }: RepositoryContext, resource: Resource): void;
347
+ abstract saveUpdate({ projectKey }: RepositoryContext, version: number, resource: Resource): void;
348
+ processUpdateActions<T extends Resource>(context: RepositoryContext, resource: T, version: number, actions: UpdateAction[]): T;
349
+ postProcessResource<T extends Resource>(resource: T): T;
351
350
  }
352
351
  declare abstract class AbstractResourceRepository extends AbstractRepository {
353
352
  abstract create(context: RepositoryContext, draft: any): BaseResource;
@@ -357,7 +356,8 @@ declare abstract class AbstractResourceRepository extends AbstractRepository {
357
356
  get(context: RepositoryContext, id: string, params?: GetParams): BaseResource | null;
358
357
  getByKey(context: RepositoryContext, key: string, params?: GetParams): BaseResource | null;
359
358
  delete(context: RepositoryContext, id: string, params?: GetParams): BaseResource | null;
360
- save(context: RepositoryContext, resource: BaseResource): void;
359
+ saveNew(context: RepositoryContext, resource: Writable<BaseResource>): void;
360
+ saveUpdate(context: RepositoryContext, version: number, resource: Writable<BaseResource>): Writable<BaseResource>;
361
361
  }
362
362
 
363
363
  declare class ProjectAPI {
@@ -388,6 +388,7 @@ declare class CommercetoolsMock {
388
388
  private _oauth2;
389
389
  private _nockScopes;
390
390
  private _services;
391
+ private _repositories;
391
392
  private _projectService?;
392
393
  constructor(options?: Partial<CommercetoolsMockOptions>);
393
394
  start(): void;