@labdigital/commercetools-mock 0.6.2 → 0.6.5

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.
@@ -16,7 +16,6 @@ var auth = _interopDefault(require('basic-auth'));
16
16
  var bodyParser = _interopDefault(require('body-parser'));
17
17
  var crypto = require('crypto');
18
18
  var uuid = require('uuid');
19
- var helpers = require('repositories/helpers');
20
19
  var deepEqual = _interopDefault(require('deep-equal'));
21
20
 
22
21
  const parseExpandClause = clause => {
@@ -958,6 +957,67 @@ const copyHeaders = headers => {
958
957
  const DEFAULT_API_HOSTNAME = /^https:\/\/api\..*?\.commercetools.com:443$/;
959
958
  const DEFAULT_AUTH_HOSTNAME = /^https:\/\/auth\..*?\.commercetools.com:443$/;
960
959
 
960
+ const createCustomFields = (draft, projectKey, storage) => {
961
+ if (!draft) return undefined;
962
+ if (!draft.type) return undefined;
963
+ if (!draft.type.typeId) return undefined;
964
+ if (!draft.fields) return undefined;
965
+ const typeResource = storage.getByResourceIdentifier(projectKey, draft.type);
966
+
967
+ if (!typeResource) {
968
+ throw new Error(`No type '${draft.type.typeId}' with id=${draft.type.id} or key=${draft.type.key}`);
969
+ }
970
+
971
+ return {
972
+ type: {
973
+ typeId: draft.type.typeId,
974
+ id: typeResource.id
975
+ },
976
+ fields: draft.fields
977
+ };
978
+ };
979
+ const createPrice = draft => {
980
+ return {
981
+ id: uuid.v4(),
982
+ value: createTypedMoney(draft.value)
983
+ };
984
+ };
985
+ const createTypedMoney = value => {
986
+ return {
987
+ type: 'centPrecision',
988
+ fractionDigits: 2,
989
+ ...value
990
+ };
991
+ };
992
+ const resolveStoreReference = (ref, projectKey, storage) => {
993
+ if (!ref) return undefined;
994
+ const resource = storage.getByResourceIdentifier(projectKey, ref);
995
+
996
+ if (!resource) {
997
+ throw new Error('No such store');
998
+ }
999
+
1000
+ const store = resource;
1001
+ return {
1002
+ typeId: 'store',
1003
+ key: store.key
1004
+ };
1005
+ };
1006
+ const getReferenceFromResourceIdentifier = (resourceIdentifier, projectKey, storage) => {
1007
+ const resource = storage.getByResourceIdentifier(projectKey, resourceIdentifier);
1008
+ if (!resource) throw new Error(`resource type ${resourceIdentifier.typeId} with id ${resourceIdentifier.id} and key ${resourceIdentifier.key} not found`);
1009
+ return {
1010
+ typeId: resourceIdentifier.typeId,
1011
+ id: resource == null ? void 0 : resource.id
1012
+ };
1013
+ };
1014
+ const getRepositoryContext = request => {
1015
+ return {
1016
+ projectKey: request.params.projectKey,
1017
+ storeKey: request.params.storeKey
1018
+ };
1019
+ };
1020
+
961
1021
  class AbstractService {
962
1022
  constructor(parent) {
963
1023
  this.createStatusCode = 201;
@@ -990,7 +1050,7 @@ class AbstractService {
990
1050
 
991
1051
  const offset = this._parseParam(request.query.offset);
992
1052
 
993
- const result = this.repository.query(helpers.getRepositoryContext(request), {
1053
+ const result = this.repository.query(getRepositoryContext(request), {
994
1054
  expand: this._parseParam(request.query.expand),
995
1055
  where: this._parseParam(request.query.where),
996
1056
  limit: limit !== undefined ? Number(limit) : undefined,
@@ -1010,7 +1070,7 @@ class AbstractService {
1010
1070
  }
1011
1071
 
1012
1072
  getWithKey(request, response) {
1013
- const result = this.repository.getByKey(helpers.getRepositoryContext(request), request.params['key'], {
1073
+ const result = this.repository.getByKey(getRepositoryContext(request), request.params['key'], {
1014
1074
  expand: this._parseParam(request.query.expand)
1015
1075
  });
1016
1076
  if (!result) return response.status(404).send();
@@ -1018,7 +1078,7 @@ class AbstractService {
1018
1078
  }
1019
1079
 
1020
1080
  deletewithId(request, response) {
1021
- const result = this.repository.delete(helpers.getRepositoryContext(request), request.params['id'], {
1081
+ const result = this.repository.delete(getRepositoryContext(request), request.params['id'], {
1022
1082
  expand: this._parseParam(request.query.expand)
1023
1083
  });
1024
1084
 
@@ -1035,7 +1095,7 @@ class AbstractService {
1035
1095
 
1036
1096
  post(request, response) {
1037
1097
  const draft = request.body;
1038
- const resource = this.repository.create(helpers.getRepositoryContext(request), draft);
1098
+ const resource = this.repository.create(getRepositoryContext(request), draft);
1039
1099
 
1040
1100
  const result = this._expandWithId(request, resource.id);
1041
1101
 
@@ -1044,7 +1104,7 @@ class AbstractService {
1044
1104
 
1045
1105
  postWithId(request, response) {
1046
1106
  const updateRequest = request.body;
1047
- const resource = this.repository.get(helpers.getRepositoryContext(request), request.params['id']);
1107
+ const resource = this.repository.get(getRepositoryContext(request), request.params['id']);
1048
1108
 
1049
1109
  if (!resource) {
1050
1110
  return response.status(404).send('Not found');
@@ -1054,7 +1114,7 @@ class AbstractService {
1054
1114
  return response.status(409).send('Concurrent modification');
1055
1115
  }
1056
1116
 
1057
- const updatedResource = this.repository.processUpdateActions(helpers.getRepositoryContext(request), resource, updateRequest.actions);
1117
+ const updatedResource = this.repository.processUpdateActions(getRepositoryContext(request), resource, updateRequest.actions);
1058
1118
 
1059
1119
  const result = this._expandWithId(request, updatedResource.id);
1060
1120
 
@@ -1066,7 +1126,7 @@ class AbstractService {
1066
1126
  }
1067
1127
 
1068
1128
  _expandWithId(request, resourceId) {
1069
- const result = this.repository.get(helpers.getRepositoryContext(request), resourceId, {
1129
+ const result = this.repository.get(getRepositoryContext(request), resourceId, {
1070
1130
  expand: this._parseParam(request.query.expand)
1071
1131
  });
1072
1132
  return result;
@@ -1174,61 +1234,6 @@ class AbstractResourceRepository extends AbstractRepository {
1174
1234
 
1175
1235
  }
1176
1236
 
1177
- const createCustomFields = (draft, projectKey, storage) => {
1178
- if (!draft) return undefined;
1179
- if (!draft.type) return undefined;
1180
- if (!draft.type.typeId) return undefined;
1181
- if (!draft.fields) return undefined;
1182
- const typeResource = storage.getByResourceIdentifier(projectKey, draft.type);
1183
-
1184
- if (!typeResource) {
1185
- throw new Error(`No type '${draft.type.typeId}' with id=${draft.type.id} or key=${draft.type.key}`);
1186
- }
1187
-
1188
- return {
1189
- type: {
1190
- typeId: draft.type.typeId,
1191
- id: typeResource.id
1192
- },
1193
- fields: draft.fields
1194
- };
1195
- };
1196
- const createPrice = draft => {
1197
- return {
1198
- id: uuid.v4(),
1199
- value: createTypedMoney(draft.value)
1200
- };
1201
- };
1202
- const createTypedMoney = value => {
1203
- return {
1204
- type: 'centPrecision',
1205
- fractionDigits: 2,
1206
- ...value
1207
- };
1208
- };
1209
- const resolveStoreReference = (ref, projectKey, storage) => {
1210
- if (!ref) return undefined;
1211
- const resource = storage.getByResourceIdentifier(projectKey, ref);
1212
-
1213
- if (!resource) {
1214
- throw new Error('No such store');
1215
- }
1216
-
1217
- const store = resource;
1218
- return {
1219
- typeId: 'store',
1220
- key: store.key
1221
- };
1222
- };
1223
- const getReferenceFromResourceIdentifier = (resourceIdentifier, projectKey, storage) => {
1224
- const resource = storage.getByResourceIdentifier(projectKey, resourceIdentifier);
1225
- if (!resource) throw new Error(`resource type ${resourceIdentifier.typeId} with id ${resourceIdentifier.id} and key ${resourceIdentifier.key} not found`);
1226
- return {
1227
- typeId: resourceIdentifier.typeId,
1228
- id: resource == null ? void 0 : resource.id
1229
- };
1230
- };
1231
-
1232
1237
  class CartDiscountRepository extends AbstractResourceRepository {
1233
1238
  constructor() {
1234
1239
  super(...arguments);
@@ -2014,7 +2019,7 @@ class CartService extends AbstractService {
2014
2019
 
2015
2020
  extraRoutes(parent) {
2016
2021
  parent.post('/replicate', (request, response) => {
2017
- const context = helpers.getRepositoryContext(request); // @ts-ignore
2022
+ const context = getRepositoryContext(request); // @ts-ignore
2018
2023
 
2019
2024
  const cartOrOrder = request.body.reference.typeId === 'order' ? this.orderRepository.get(context, request.body.reference.id) : this.repository.get(context, request.body.reference.id);
2020
2025
 
@@ -2299,7 +2304,7 @@ class CustomerService extends AbstractService {
2299
2304
 
2300
2305
  extraRoutes(parent) {
2301
2306
  parent.post('/password-token', (request, response) => {
2302
- const customer = this.repository.query(helpers.getRepositoryContext(request), {
2307
+ const customer = this.repository.query(getRepositoryContext(request), {
2303
2308
  where: [`email="${request.body.email}"`]
2304
2309
  }); // @ts-ignore
2305
2310
 
@@ -2382,7 +2387,7 @@ class CustomObjectService extends AbstractService {
2382
2387
  }
2383
2388
 
2384
2389
  getWithContainerAndKey(request, response) {
2385
- const result = this.repository.getWithContainerAndKey(helpers.getRepositoryContext(request), request.params.container, request.params.key);
2390
+ const result = this.repository.getWithContainerAndKey(getRepositoryContext(request), request.params.container, request.params.key);
2386
2391
 
2387
2392
  if (!result) {
2388
2393
  return response.status(404).send('Not Found');
@@ -2396,18 +2401,18 @@ class CustomObjectService extends AbstractService {
2396
2401
  key: request.params.key,
2397
2402
  container: request.params.container
2398
2403
  };
2399
- const result = this.repository.create(helpers.getRepositoryContext(request), draft);
2404
+ const result = this.repository.create(getRepositoryContext(request), draft);
2400
2405
  return response.status(200).send(result);
2401
2406
  }
2402
2407
 
2403
2408
  deleteWithContainerAndKey(request, response) {
2404
- const current = this.repository.getWithContainerAndKey(helpers.getRepositoryContext(request), request.params.container, request.params.key);
2409
+ const current = this.repository.getWithContainerAndKey(getRepositoryContext(request), request.params.container, request.params.key);
2405
2410
 
2406
2411
  if (!current) {
2407
2412
  return response.status(404).send('Not Found');
2408
2413
  }
2409
2414
 
2410
- const result = this.repository.delete(helpers.getRepositoryContext(request), current.id);
2415
+ const result = this.repository.delete(getRepositoryContext(request), current.id);
2411
2416
  return response.status(200).send(result);
2412
2417
  }
2413
2418
 
@@ -2829,12 +2834,12 @@ class OrderService extends AbstractService {
2829
2834
 
2830
2835
  import(request, response) {
2831
2836
  const importDraft = request.body;
2832
- const resource = this.repository.import(helpers.getRepositoryContext(request), importDraft);
2837
+ const resource = this.repository.import(getRepositoryContext(request), importDraft);
2833
2838
  return response.status(200).send(resource);
2834
2839
  }
2835
2840
 
2836
2841
  getWithOrderNumber(request, response) {
2837
- const resource = this.repository.getWithOrderNumber(helpers.getRepositoryContext(request), request.params.orderNumber, request.query);
2842
+ const resource = this.repository.getWithOrderNumber(getRepositoryContext(request), request.params.orderNumber, request.query);
2838
2843
 
2839
2844
  if (resource) {
2840
2845
  return response.status(200).send(resource);
@@ -2918,13 +2923,15 @@ class ProductProjectionRepository extends AbstractResourceRepository {
2918
2923
  search(context, query) {
2919
2924
  var _query$filterQuery;
2920
2925
 
2926
+ const expand = query.expand ? query.expand : undefined;
2921
2927
  const filter = (_query$filterQuery = query['filter.query']) != null ? _query$filterQuery : query.filter;
2922
2928
  const wherePredicate = filter ? parseFilterExpression(filter) : undefined;
2923
2929
 
2924
2930
  const results = this._storage.query(context.projectKey, this.getTypeId(), {
2925
2931
  where: wherePredicate,
2926
2932
  offset: query.offset ? Number(query.offset) : undefined,
2927
- limit: query.limit ? Number(query.limit) : undefined
2933
+ limit: query.limit ? Number(query.limit) : undefined,
2934
+ expand
2928
2935
  }); //TODO: this is a partial implementation, but I don't really have the time to implement an actual search API right now
2929
2936
 
2930
2937
 
@@ -2956,7 +2963,7 @@ class ProductProjectionService extends AbstractService {
2956
2963
  }
2957
2964
 
2958
2965
  search(request, response) {
2959
- const resource = this.repository.search(helpers.getRepositoryContext(request), request.query);
2966
+ const resource = this.repository.search(getRepositoryContext(request), request.query);
2960
2967
  return response.status(200).send(resource);
2961
2968
  }
2962
2969
 
@@ -3228,7 +3235,7 @@ class ProductTypeService extends AbstractService {
3228
3235
  }
3229
3236
 
3230
3237
  getWithKey(request, response) {
3231
- const resource = this.repository.getWithKey(helpers.getRepositoryContext(request), request.params.key);
3238
+ const resource = this.repository.getWithKey(getRepositoryContext(request), request.params.key);
3232
3239
 
3233
3240
  if (resource) {
3234
3241
  return response.status(200).send(resource);
@@ -3381,19 +3388,19 @@ class ProjectService {
3381
3388
  }
3382
3389
 
3383
3390
  get(request, response) {
3384
- const project = this.repository.get(helpers.getRepositoryContext(request));
3391
+ const project = this.repository.get(getRepositoryContext(request));
3385
3392
  return response.status(200).send(project);
3386
3393
  }
3387
3394
 
3388
3395
  post(request, response) {
3389
3396
  const updateRequest = request.body;
3390
- const project = this.repository.get(helpers.getRepositoryContext(request));
3397
+ const project = this.repository.get(getRepositoryContext(request));
3391
3398
 
3392
3399
  if (!project) {
3393
3400
  return response.status(404).send({});
3394
3401
  }
3395
3402
 
3396
- this.repository.processUpdateActions(helpers.getRepositoryContext(request), project, updateRequest.actions);
3403
+ this.repository.processUpdateActions(getRepositoryContext(request), project, updateRequest.actions);
3397
3404
  return response.status(200).send({});
3398
3405
  }
3399
3406
 
@@ -3730,7 +3737,7 @@ class StoreService extends AbstractService {
3730
3737
  }
3731
3738
 
3732
3739
  getWithKey(request, response) {
3733
- const resource = this.repository.getWithKey(helpers.getRepositoryContext(request), request.params.key);
3740
+ const resource = this.repository.getWithKey(getRepositoryContext(request), request.params.key);
3734
3741
 
3735
3742
  if (resource) {
3736
3743
  return response.status(200).send(resource);
@@ -3905,7 +3912,7 @@ class TaxCategoryService extends AbstractService {
3905
3912
  }
3906
3913
 
3907
3914
  getWithKey(request, response) {
3908
- const resource = this.repository.getWithKey(helpers.getRepositoryContext(request), request.params.key);
3915
+ const resource = this.repository.getWithKey(getRepositoryContext(request), request.params.key);
3909
3916
 
3910
3917
  if (resource) {
3911
3918
  return response.status(200).send(resource);
@@ -4128,7 +4135,7 @@ class MyCustomerService extends AbstractService {
4128
4135
  }
4129
4136
 
4130
4137
  getMe(request, response) {
4131
- const resource = this.repository.getMe(helpers.getRepositoryContext(request));
4138
+ const resource = this.repository.getMe(getRepositoryContext(request));
4132
4139
 
4133
4140
  if (!resource) {
4134
4141
  return response.status(404).send('Not found');
@@ -4139,7 +4146,7 @@ class MyCustomerService extends AbstractService {
4139
4146
 
4140
4147
  signUp(request, response) {
4141
4148
  const draft = request.body;
4142
- const resource = this.repository.create(helpers.getRepositoryContext(request), draft);
4149
+ const resource = this.repository.create(getRepositoryContext(request), draft);
4143
4150
 
4144
4151
  const result = this._expandWithId(request, resource.id);
4145
4152
 
@@ -4154,7 +4161,7 @@ class MyCustomerService extends AbstractService {
4154
4161
  password
4155
4162
  } = request.body;
4156
4163
  const encodedPassword = Buffer.from(password).toString('base64');
4157
- const result = this.repository.query(helpers.getRepositoryContext(request), {
4164
+ const result = this.repository.query(getRepositoryContext(request), {
4158
4165
  where: [`email = "${email}"`, `password = "${encodedPassword}"`]
4159
4166
  });
4160
4167