/
delete-order.spec.js
108 lines (99 loc) · 2.54 KB
/
delete-order.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const path = require("path")
const chai = require("chai")
const chaiAsPromised = require("chai-as-promised")
const expect = chai.expect
const { PactV3, MatchersV3 } = require("@pact-foundation/pact/v3")
const { deleteFirstOrder } = require('../consumer')
chai.use(chaiAsPromised)
const {
eachLike,
url,
integer,
regex,
arrayContaining
} = MatchersV3
describe("Siren Pact test", () => {
let provider
beforeEach(() => {
provider = new PactV3({
consumer: "Siren Order Provider",
provider: "Siren Order Service",
dir: path.resolve(process.cwd(), "pacts")
})
})
it('deletes the first order using the delete action', () => {
provider
// Get Root Request
.uponReceiving("get root")
.withRequest({
path: "/",
})
.willRespondWith({
status: 200,
headers: {
'Content-Type': 'application/vnd.siren+json'
},
body: {
class: [ "representation"],
links: [{"rel":["orders"], "href": url(["orders"]) }]
}
})
// Get Orders Request
.uponReceiving("get all orders")
.withRequest({
path: "/orders",
})
.willRespondWith({
status: 200,
headers: {
'Content-Type': 'application/vnd.siren+json'
},
body: {
class: [ "entity" ],
entities: eachLike({
class: [ "entity" ],
rel: [ "item" ],
properties: {
"id": integer(1234)
},
links: [
{
"rel": [ "self" ],
"href": url(["orders", regex("\\d+", "1234")])
}
],
"actions": arrayContaining(
{
"name": "update",
"method": "PUT",
"href": url(["orders", regex("\\d+", "1234")])
},
{
"name": "delete",
"method": "DELETE",
"href": url(["orders", regex("\\d+", "1234")])
}
)
}),
links: [
{
rel: [ "self" ],
href: url(["orders"])
}
]
}
})
// Delete Order Request
.uponReceiving("delete order")
.withRequest({
method: "DELETE",
path: regex("/orders/\\d+", "/orders/1234"),
})
.willRespondWith({
status: 200
})
return provider.executeTest(mockserver => {
return expect(deleteFirstOrder(mockserver.url)).to.eventually.be.true
})
})
})