Skip to content

Commit 282bf59

Browse files
authored
feat(customer): add setCustomerNumber action (#154)
1 parent 7c83048 commit 282bf59

File tree

4 files changed

+60
-2
lines changed

4 files changed

+60
-2
lines changed

.changeset/flat-papayas-cough.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@labdigital/commercetools-mock': minor
3+
---
4+
5+
add support for customer setCustomerNumber action

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
## 1.11.0
2-
31
## 2.15.0
42

53
### Minor Changes
@@ -153,6 +151,8 @@
153151

154152
- [#108](https://github.com/labd/commercetools-node-mock/pull/108) [`0073abe`](https://github.com/labd/commercetools-node-mock/commit/0073abe1ff75a4bd8b9150cd053b77f0649576ca) Thanks [@mvantellingen](https://github.com/mvantellingen)! - Switch from nock to MSW 2.0 to support native fetch calls. This requires Node 18+
155153

154+
## 1.11.0
155+
156156
### Minor Changes
157157

158158
- [#117](https://github.com/labd/commercetools-node-mock/pull/117) [`a8b52d9`](https://github.com/labd/commercetools-node-mock/commit/a8b52d988ae1b0981dbd75efea5941901e6d204d) Thanks [@mikedebock](https://github.com/mikedebock)! - add support for cart addItemShippingAddress and setLineItemShippingDetails

src/repositories/customer.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
CustomerSetFirstNameAction,
1010
CustomerSetLastNameAction,
1111
CustomerSetVatIdAction,
12+
CustomerSetCustomerNumberAction,
1213
DuplicateFieldError,
1314
InvalidInputError,
1415
InvalidJsonInputError,
@@ -211,5 +212,17 @@ export class CustomerRepository extends AbstractResourceRepository<'customer'> {
211212
}
212213
resource.custom.fields[name] = value
213214
},
215+
setCustomerNumber: (
216+
_context: RepositoryContext,
217+
resource: Writable<Customer>,
218+
{ customerNumber }: CustomerSetCustomerNumberAction
219+
) => {
220+
if (resource.customerNumber) {
221+
throw new Error(
222+
'A Customer number already exists and cannot be set again.'
223+
)
224+
}
225+
resource.customerNumber = customerNumber
226+
},
214227
}
215228
}

src/services/customer.test.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,4 +330,44 @@ describe('Customer Update Actions', () => {
330330
},
331331
])
332332
})
333+
334+
test('setCustomerNumber', async () => {
335+
assert(customer, 'customer not created')
336+
337+
ctMock.project('dummy').add('customer', customer)
338+
339+
const response = await supertest(ctMock.app)
340+
.post(`/dummy/customers/${customer.id}`)
341+
.send({
342+
version: 1,
343+
actions: [
344+
{ action: 'setCustomerNumber', customerNumber: 'CUSTOMER-001' },
345+
],
346+
})
347+
expect(response.status).toBe(200)
348+
expect(response.body.version).toBe(2)
349+
expect(response.body.customerNumber).toBe('CUSTOMER-001')
350+
})
351+
352+
test('setCustomerNumber error when already have a customer number', async () => {
353+
assert(customer, 'customer not created')
354+
355+
ctMock.project('dummy').add('customer', {
356+
...customer,
357+
customerNumber: 'CUSTOMER-002',
358+
})
359+
360+
const response = await supertest(ctMock.app)
361+
.post(`/dummy/customers/${customer.id}`)
362+
.send({
363+
version: 1,
364+
actions: [
365+
{ action: 'setCustomerNumber', customerNumber: 'CUSTOMER-001' },
366+
],
367+
})
368+
expect(response.status).toBe(500)
369+
expect(response.body.error).toBe(
370+
'A Customer number already exists and cannot be set again.'
371+
)
372+
})
333373
})

0 commit comments

Comments
 (0)