@labdigital/commercetools-mock 2.47.1 → 2.48.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@labdigital/commercetools-mock",
3
- "version": "2.47.1",
3
+ "version": "2.48.1",
4
4
  "license": "MIT",
5
5
  "author": "Michael van Tellingen",
6
6
  "type": "module",
package/src/ctMock.ts CHANGED
@@ -138,9 +138,9 @@ export class CommercetoolsMock {
138
138
  this._oauth2.setCustomerRepository(this._repositories.customer);
139
139
 
140
140
  const app = express();
141
+ app.use(express.json());
141
142
 
142
143
  const projectRouter = express.Router({ mergeParams: true });
143
- projectRouter.use(express.json());
144
144
 
145
145
  if (!options?.silent) {
146
146
  app.use(morgan("tiny"));
@@ -75,7 +75,7 @@ export class OAuth2Server {
75
75
  return async (request: Request, response: Response, next: NextFunction) => {
76
76
  const token = getBearerToken(request);
77
77
  if (!token) {
78
- next(
78
+ return next(
79
79
  new CommercetoolsError<InvalidTokenError>(
80
80
  {
81
81
  code: "invalid_token",
@@ -88,7 +88,7 @@ export class OAuth2Server {
88
88
  }
89
89
 
90
90
  if (!token || !this.store.validateToken(token)) {
91
- next(
91
+ return next(
92
92
  new CommercetoolsError<InvalidTokenError>(
93
93
  {
94
94
  code: "invalid_token",
@@ -99,7 +99,7 @@ export class OAuth2Server {
99
99
  );
100
100
  }
101
101
 
102
- next();
102
+ return next();
103
103
  };
104
104
  }
105
105
 
@@ -1,5 +1,7 @@
1
1
  import { CartRepository } from "./cart";
2
2
  import { OrderRepository } from "./order";
3
+ import { QuoteRequestRepository } from "./quote-request";
3
4
 
4
5
  export class AsAssociateOrderRepository extends OrderRepository {}
5
6
  export class AsAssociateCartRepository extends CartRepository {}
7
+ export class AsAssociateQuoteRequestRepository extends QuoteRequestRepository {}
@@ -3,6 +3,7 @@ import { ProductTailoringRepository } from "~src/repositories/product-tailoring"
3
3
  import {
4
4
  AsAssociateCartRepository,
5
5
  AsAssociateOrderRepository,
6
+ AsAssociateQuoteRequestRepository,
6
7
  } from "./as-associate";
7
8
  import { AssociateRoleRepository } from "./associate-role";
8
9
  import { AttributeGroupRepository } from "./attribute-group";
@@ -48,6 +49,7 @@ export const createRepositories = (config: Config) => ({
48
49
  "as-associate": {
49
50
  cart: new AsAssociateCartRepository(config),
50
51
  order: new AsAssociateOrderRepository(config),
52
+ "quote-request": new AsAssociateQuoteRequestRepository(config),
51
53
  },
52
54
  "associate-role": new AssociateRoleRepository(config),
53
55
  "attribute-group": new AttributeGroupRepository(config),
@@ -0,0 +1,3 @@
1
+ import { QuoteRequestRepository } from "./quote-request";
2
+
3
+ export class MyQuoteRequestRepository extends QuoteRequestRepository {}
@@ -2,6 +2,7 @@ import assert from "node:assert";
2
2
  import type {
3
3
  Cart,
4
4
  CartReference,
5
+ MyQuoteRequestDraft,
5
6
  QuoteRequest,
6
7
  QuoteRequestDraft,
7
8
  } from "@commercetools/platform-sdk";
@@ -17,7 +18,18 @@ export class QuoteRequestRepository extends AbstractResourceRepository<"quote-re
17
18
  this.actions = new QuoteRequestUpdateHandler(config.storage);
18
19
  }
19
20
 
20
- create(context: RepositoryContext, draft: QuoteRequestDraft): QuoteRequest {
21
+ create(
22
+ context: RepositoryContext,
23
+ draft: QuoteRequestDraft | MyQuoteRequestDraft,
24
+ ): QuoteRequest {
25
+ // Handle the 'my' version of the draft
26
+ if ("cartId" in draft) {
27
+ return this.createFromCart(context, {
28
+ id: draft.cartId,
29
+ typeId: "cart",
30
+ });
31
+ }
32
+
21
33
  assert(draft.cart, "draft.cart is missing");
22
34
  return this.createFromCart(context, {
23
35
  id: draft.cart.id!,
@@ -71,7 +71,16 @@ export default abstract class AbstractService {
71
71
  getWithId(request: Request, response: Response) {
72
72
  const result = this._expandWithId(request, request.params.id);
73
73
  if (!result) {
74
- response.status(404).send();
74
+ response.status(404).send({
75
+ statusCode: 404,
76
+ message: `The Resource with ID '${request.params.id} was not found.`,
77
+ errors: [
78
+ {
79
+ code: "ResourceNotFound",
80
+ message: `The Resource with ID '${request.params.id} was not found.`,
81
+ },
82
+ ],
83
+ });
75
84
  return;
76
85
  }
77
86
  response.status(200).send(result);
@@ -86,7 +95,16 @@ export default abstract class AbstractService {
86
95
  },
87
96
  );
88
97
  if (!result) {
89
- response.status(404).send();
98
+ response.status(404).send({
99
+ statusCode: 404,
100
+ message: `The Resource with key '${request.params.id} was not found.`,
101
+ errors: [
102
+ {
103
+ code: "ResourceNotFound",
104
+ message: `The Resource with key '${request.params.id} was not found.`,
105
+ },
106
+ ],
107
+ });
90
108
  return;
91
109
  }
92
110
  response.status(200).send(result);
@@ -101,7 +119,7 @@ export default abstract class AbstractService {
101
119
  },
102
120
  );
103
121
  if (!result) {
104
- response.status(404).send("Not found");
122
+ response.status(404).send({ statusCode: 404 });
105
123
  return;
106
124
  }
107
125
  response.status(200).send(result);
@@ -113,7 +131,7 @@ export default abstract class AbstractService {
113
131
  request.params.key,
114
132
  );
115
133
  if (!resource) {
116
- response.status(404).send("Not found");
134
+ response.status(404).send({ statusCode: 404 });
117
135
  return;
118
136
  }
119
137
 
@@ -125,7 +143,7 @@ export default abstract class AbstractService {
125
143
  },
126
144
  );
127
145
  if (!result) {
128
- response.status(404).send("Not found");
146
+ response.status(404).send({ statusCode: 404 });
129
147
  return;
130
148
  }
131
149
  response.status(200).send(result);
@@ -151,7 +169,7 @@ export default abstract class AbstractService {
151
169
  request.params.id,
152
170
  );
153
171
  if (!resource) {
154
- response.status(404).send("Not found");
172
+ response.status(404).send({ statusCode: 404 });
155
173
  return;
156
174
  }
157
175
 
@@ -177,7 +195,7 @@ export default abstract class AbstractService {
177
195
  request.params.key,
178
196
  );
179
197
  if (!resource) {
180
- response.status(404).send("Not found");
198
+ response.status(404).send({ statusCode: 404 });
181
199
  return;
182
200
  }
183
201
 
@@ -0,0 +1,34 @@
1
+ import { Router } from "express";
2
+ import type { MyQuoteRequestRepository } from "~src/repositories/my-quote-request";
3
+ import type { MyOrderRepository } from "../repositories/my-order";
4
+ import AbstractService from "./abstract";
5
+
6
+ export class AsAssociateQuoteRequestService extends AbstractService {
7
+ public repository: MyQuoteRequestRepository;
8
+
9
+ constructor(parent: Router, repository: MyQuoteRequestRepository) {
10
+ super(parent);
11
+ this.repository = repository;
12
+ }
13
+
14
+ getBasePath() {
15
+ return "quote-requests";
16
+ }
17
+
18
+ registerRoutes(parent: Router) {
19
+ const basePath = this.getBasePath();
20
+ const router = Router({ mergeParams: true });
21
+
22
+ this.extraRoutes(router);
23
+
24
+ router.get("/", this.get.bind(this));
25
+ router.get("/:id", this.getWithId.bind(this));
26
+
27
+ router.delete("/:id", this.deleteWithId.bind(this));
28
+
29
+ router.post("/", this.post.bind(this));
30
+ router.post("/:id", this.postWithId.bind(this));
31
+
32
+ parent.use(`/${basePath}`, router);
33
+ }
34
+ }
@@ -2,13 +2,16 @@ import { Router } from "express";
2
2
  import type {
3
3
  AsAssociateCartRepository,
4
4
  AsAssociateOrderRepository,
5
+ AsAssociateQuoteRequestRepository,
5
6
  } from "~src/repositories/as-associate";
6
7
  import { AsAssociateCartService } from "./as-associate-cart";
7
8
  import { AsAssociateOrderService } from "./as-associate-order";
9
+ import { AsAssociateQuoteRequestService } from "./as-associate-quote-request";
8
10
 
9
11
  type Repositories = {
10
12
  cart: AsAssociateCartRepository;
11
13
  order: AsAssociateOrderRepository;
14
+ "quote-request": AsAssociateQuoteRequestRepository;
12
15
  };
13
16
 
14
17
  export class AsAssociateService {
@@ -17,6 +20,7 @@ export class AsAssociateService {
17
20
  subServices: {
18
21
  cart: AsAssociateCartService;
19
22
  order: AsAssociateOrderService;
23
+ "quote-request": AsAssociateQuoteRequestService;
20
24
  };
21
25
 
22
26
  constructor(parent: Router, repositories: Repositories) {
@@ -25,6 +29,10 @@ export class AsAssociateService {
25
29
  this.subServices = {
26
30
  order: new AsAssociateOrderService(this.router, repositories.order),
27
31
  cart: new AsAssociateCartService(this.router, repositories.cart),
32
+ "quote-request": new AsAssociateQuoteRequestService(
33
+ this.router,
34
+ repositories["quote-request"],
35
+ ),
28
36
  };
29
37
  parent.use(
30
38
  "/as-associate/:associateId/in-business-unit/key=:businessUnitId",
@@ -52,7 +52,7 @@ export class CustomObjectService extends AbstractService {
52
52
  );
53
53
 
54
54
  if (!result) {
55
- response.status(404).send("Not Found");
55
+ response.status(404).send({ statusCode: 404 });
56
56
  return;
57
57
  }
58
58
  response.status(200).send(result);
@@ -77,7 +77,7 @@ export class CustomObjectService extends AbstractService {
77
77
  );
78
78
 
79
79
  if (!current) {
80
- response.status(404).send("Not Found");
80
+ response.status(404).send({ statusCode: 404 });
81
81
  return;
82
82
  }
83
83
 
@@ -37,7 +37,16 @@ export class MyCartService extends AbstractService {
37
37
  activeCart(request: Request, response: Response) {
38
38
  const resource = this.repository.getActiveCart(request.params.projectKey);
39
39
  if (!resource) {
40
- response.status(404).send("Not found");
40
+ response.status(404).send({
41
+ statusCode: 404,
42
+ message: "No active cart exists.",
43
+ errors: [
44
+ {
45
+ code: "ResourceNotFound",
46
+ message: "No active cart exists.",
47
+ },
48
+ ],
49
+ });
41
50
  return;
42
51
  }
43
52
  response.status(200).send(resource);
@@ -44,7 +44,7 @@ export class MyCustomerService extends AbstractService {
44
44
  getMe(request: Request, response: Response) {
45
45
  const resource = this.repository.getMe(getRepositoryContext(request));
46
46
  if (!resource) {
47
- response.status(404).send("Not found");
47
+ response.status(404).send({ statusCode: 404 });
48
48
  return;
49
49
  }
50
50
  response.status(200).send(resource);
@@ -54,7 +54,7 @@ export class MyCustomerService extends AbstractService {
54
54
  const resource = this.repository.getMe(getRepositoryContext(request));
55
55
 
56
56
  if (!resource) {
57
- response.status(404).send("Not found");
57
+ response.status(404).send({ statusCode: 404 });
58
58
  return;
59
59
  }
60
60
  const updateRequest = validateData<Update>(
@@ -75,7 +75,7 @@ export class MyCustomerService extends AbstractService {
75
75
  deleteMe(request: Request, response: Response) {
76
76
  const resource = this.repository.deleteMe(getRepositoryContext(request));
77
77
  if (!resource) {
78
- response.status(404).send("Not found");
78
+ response.status(404).send({ statusCode: 404 });
79
79
  return;
80
80
  }
81
81
 
@@ -33,9 +33,10 @@ export class OrderService extends AbstractService {
33
33
  }
34
34
 
35
35
  getWithOrderNumber(request: Request, response: Response) {
36
+ const orderNumber = request.params.orderNumber;
36
37
  const resource = this.repository.getWithOrderNumber(
37
38
  getRepositoryContext(request),
38
- request.params.orderNumber,
39
+ orderNumber,
39
40
 
40
41
  // @ts-ignore
41
42
  request.query,
@@ -44,6 +45,15 @@ export class OrderService extends AbstractService {
44
45
  response.status(200).send(resource);
45
46
  return;
46
47
  }
47
- response.status(404).send("Not found");
48
+ response.status(404).send({
49
+ statusCode: 404,
50
+ message: `The Resource with key '${orderNumber}' was not found.`,
51
+ errors: [
52
+ {
53
+ code: "ResourceNotFound",
54
+ message: `The Resource with key '${orderNumber}' was not found.`,
55
+ },
56
+ ],
57
+ });
48
58
  }
49
59
  }
@@ -31,7 +31,7 @@ export class ProjectService {
31
31
  const project = this.repository.get(getRepositoryContext(request));
32
32
 
33
33
  if (!project) {
34
- response.status(404).send({});
34
+ response.status(404).send({ statusCode: 404 });
35
35
  return;
36
36
  }
37
37