Skip to content

Commit cdb2028

Browse files
henrikhenrikperssonHenrik Persson
andauthored
Use openapi-client to talk to onecore-work-order (#286)
Co-authored-by: Henrik Persson <henrik.persson@iteam.com>
1 parent d2c2683 commit cdb2028

File tree

13 files changed

+1236
-239
lines changed

13 files changed

+1236
-239
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
"ts:watch": "tsc --watch --noEmit",
1919
"test:ci": "TZ=UTC jest --silent",
2020
"ts:ci": "tsc --noEmit",
21-
"generate-types:property-base": "npx openapi-typescript http://localhost:5050/swagger.json -o ./src/adapters/property-base-adapter/generated/api-types.ts"
21+
"generate-types:property-base": "npx openapi-typescript http://localhost:5050/swagger.json -o ./src/adapters/property-base-adapter/generated/api-types.ts",
22+
"generate-types:work-order": "npx openapi-typescript http://localhost:5070/swagger.json -o ./src/adapters/work-order-adapter/generated/api-types.ts",
23+
"generate-types": "npm run generate-types:property-base & npm run generate-types:work-order"
2224
},
2325
"author": "",
2426
"license": "MIT",

src/adapters/property-management-adapter.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,13 @@ const getRentalProperty = async (
3232
//todo: modify calling code to use a pattern like in "getRentalPropertyInfoFromXpand"
3333
const getRentalPropertyInfo = async (
3434
rentalPropertyId: string
35-
): Promise<RentalPropertyInfo> => {
35+
): Promise<RentalPropertyInfo | null> => {
3636
const propertyResponse = await axios(
3737
propertyManagementServiceUrl + '/rentalPropertyInfo/' + rentalPropertyId
3838
)
39+
if (propertyResponse.status === 404) {
40+
return null
41+
}
3942

4043
return propertyResponse.data.content
4144
}

src/adapters/tests/work-order-adapter.test.ts

Lines changed: 93 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,34 @@
1-
import nock from 'nock'
1+
import { http, HttpResponse } from 'msw'
2+
import { setupServer } from 'msw/node'
23

34
import config from '../../common/config'
45
import * as workOrderAdapter from '../work-order-adapter'
56
import * as factory from '../../../test/factories'
67

8+
const mockServer = setupServer()
9+
710
describe('work-order-adapter', () => {
11+
beforeAll(() => {
12+
mockServer.listen()
13+
})
14+
15+
afterEach(() => {
16+
mockServer.resetHandlers()
17+
})
18+
19+
afterAll(() => {
20+
mockServer.close()
21+
})
22+
823
describe(workOrderAdapter.getWorkOrdersByContactCode, () => {
9-
const workOrderMock = factory.workOrder.build()
24+
const workOrderMock = factory.workOrder.buildList(2)
1025
it('returns err if request fails', async () => {
11-
nock(config.workOrderService.url)
12-
.get('/workOrders/contactCode/CC123')
13-
.reply(500)
26+
mockServer.use(
27+
http.get(
28+
`${config.workOrderService.url}/workOrders/contactCode/CC123`,
29+
() => new HttpResponse(null, { status: 500 })
30+
)
31+
)
1432

1533
const result = await workOrderAdapter.getWorkOrdersByContactCode('CC123')
1634

@@ -19,37 +37,55 @@ describe('work-order-adapter', () => {
1937
})
2038

2139
it('returns work order data', async () => {
22-
nock(config.workOrderService.url)
23-
.get('/workOrders/contactCode/CC123')
24-
.reply(200, {
25-
content: { workOrders: [workOrderMock] },
26-
})
40+
mockServer.use(
41+
http.get(
42+
`${config.workOrderService.url}/workOrders/contactCode/CC123`,
43+
() =>
44+
HttpResponse.json(
45+
{
46+
content: { workOrders: workOrderMock },
47+
},
48+
{ status: 200 }
49+
)
50+
)
51+
)
2752

2853
const result = await workOrderAdapter.getWorkOrdersByContactCode('CC123')
2954

3055
expect(result).toMatchObject({
3156
ok: true,
32-
data: [workOrderMock],
57+
data: workOrderMock,
3358
})
3459
})
3560
})
3661

3762
describe(workOrderAdapter.createWorkOrder, () => {
3863
const createWorkOrderMock = factory.createWorkOrder.build()
3964
it('returns err if request fails', async () => {
40-
nock(config.workOrderService.url).post('/workOrders').reply(500)
65+
mockServer.use(
66+
http.post(
67+
`${config.workOrderService.url}/workOrders`,
68+
() => new HttpResponse(null, { status: 500 })
69+
)
70+
)
4171

4272
const result = await workOrderAdapter.createWorkOrder(createWorkOrderMock)
4373

4474
expect(result.ok).toBe(false)
45-
if (!result.ok)
46-
expect(result.err).toBe('Request failed with status code 500')
75+
if (!result.ok) expect(result.err).toBe('unknown')
4776
})
4877

4978
it('returns work order data', async () => {
50-
nock(config.workOrderService.url)
51-
.post('/workOrders')
52-
.reply(200, { content: { newWorkOrderId: 1 } })
79+
mockServer.use(
80+
http.post(`${config.workOrderService.url}/workOrders`, () =>
81+
HttpResponse.json(
82+
{
83+
content: { newWorkOrderId: 1 },
84+
},
85+
{ status: 200 }
86+
)
87+
)
88+
)
5389

5490
const result = await workOrderAdapter.createWorkOrder(createWorkOrderMock)
5591

@@ -59,24 +95,33 @@ describe('work-order-adapter', () => {
5995
})
6096

6197
describe(workOrderAdapter.updateWorkOrder, () => {
62-
it('returns err if request fails', async () => {
63-
nock(config.workOrderService.url).post('/workOrders/1/update').reply(500)
98+
it.only('returns err if request fails', async () => {
99+
mockServer.use(
100+
http.post(
101+
`${config.workOrderService.url}/workOrders/1/update`,
102+
() => new HttpResponse(null, { status: 500 })
103+
)
104+
)
64105

65-
const result = await workOrderAdapter.updateWorkOrder(1, 'Test message')
106+
const result = await workOrderAdapter.updateWorkOrder('1', 'Test message')
66107

67108
expect(result.ok).toBe(false)
68-
if (!result.ok)
69-
expect(result.err).toBe('Request failed with status code 500')
109+
if (!result.ok) expect(result.err).toBe('unknown')
70110
})
71111

72112
it('returns updated work order data', async () => {
73-
nock(config.workOrderService.url)
74-
.post('/workOrders/1/update')
75-
.reply(200, {
76-
content: { message: 'Message added to work order with ID 1' },
77-
})
78-
79-
const result = await workOrderAdapter.updateWorkOrder(1, 'Test message')
113+
mockServer.use(
114+
http.post(`${config.workOrderService.url}/workOrders/1/update`, () =>
115+
HttpResponse.json(
116+
{
117+
content: { message: 'Message added to work order with ID 1' },
118+
},
119+
{ status: 200 }
120+
)
121+
)
122+
)
123+
124+
const result = await workOrderAdapter.updateWorkOrder('1', 'Test message')
80125

81126
expect(result.ok).toBe(true)
82127
if (result.ok)
@@ -88,23 +133,33 @@ describe('work-order-adapter', () => {
88133

89134
describe(workOrderAdapter.closeWorkOrder, () => {
90135
it('returns err if request fails', async () => {
91-
nock(config.workOrderService.url).post('/workOrders/1/close').reply(500)
136+
mockServer.use(
137+
http.post(
138+
`${config.workOrderService.url}/workOrders/1/close`,
139+
() => new HttpResponse(null, { status: 500 })
140+
)
141+
)
92142

93-
const result = await workOrderAdapter.closeWorkOrder(1)
143+
const result = await workOrderAdapter.closeWorkOrder('1')
94144

95145
expect(result.ok).toBe(false)
96146
if (!result.ok)
97147
expect(result.err).toBe('Request failed with status code 500')
98148
})
99149

100150
it('returns closed work order data', async () => {
101-
nock(config.workOrderService.url)
102-
.post('/workOrders/1/close')
103-
.reply(200, {
104-
content: { message: 'Work order with ID 1 updated successfully' },
105-
})
106-
107-
const result = await workOrderAdapter.closeWorkOrder(1)
151+
mockServer.use(
152+
http.post(`${config.workOrderService.url}/workOrders/1/close`, () =>
153+
HttpResponse.json(
154+
{
155+
content: { message: 'Work order with ID 1 updated successfully' },
156+
},
157+
{ status: 200 }
158+
)
159+
)
160+
)
161+
162+
const result = await workOrderAdapter.closeWorkOrder('1')
108163

109164
expect(result.ok).toBe(true)
110165
if (result.ok)

src/adapters/work-order-adapter.ts

Lines changed: 0 additions & 132 deletions
This file was deleted.

0 commit comments

Comments
 (0)