-
Notifications
You must be signed in to change notification settings - Fork 3
/
OpenApiClientIntegrationSpec.groovy
122 lines (100 loc) · 3.64 KB
/
OpenApiClientIntegrationSpec.groovy
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package com.bol.openapi
import spock.lang.Specification
class OpenApiClientIntegrationSpec extends Specification {
private String apiKey
def setup() {
apiKey = System.getenv('OPENAPI_KEY')
if (!apiKey) {
apiKey = System.getProperty('OPENAPI_KEY')
}
Objects.requireNonNull(apiKey, '''
Running from your IDE? Set the OPENAPI_KEY property to your OpenAPI API key
Running with Gradle, then the 'openapi.properties' should exist in the root project directory with your OpenAPI API key'''.stripIndent()
)
}
def 'Search by term'() {
def results = OpenApiClient.withDefaultClient(apiKey).searchBuilder()
.term("harry potter")
.search()
expect:
results.totalResultSize > 0
results.products.size() > 0 && results.products.size() <= 10
results.categories.size() == 0
results.refinementGroups.size() == 0
}
def 'Search by multiple terms'() {
def results = OpenApiClient.withDefaultClient(apiKey).searchBuilder()
.term("harry potter")
.term("boek")
.term("deel 3")
.search()
expect:
results.totalResultSize > 0
results.products.size() > 0 && results.products.size() <= 10
results.categories.size() == 0
results.refinementGroups.size() == 0
}
def 'Offset'() {
def results = OpenApiClient.withDefaultClient(apiKey).searchBuilder()
.term('harry potter')
.offset(20)
.search()
expect:
results.totalResultSize > 0
results.products.size() > 0 && results.products.size() <= 10
results.categories.size() == 0
results.refinementGroups.size() == 0
}
def 'Limit the amount of returned results'() {
def results = OpenApiClient.withDefaultClient(apiKey).searchBuilder()
.term('harry potter')
.limit(20)
.search()
expect:
results.totalResultSize > 0
results.products.size() <= 20
results.categories.size() == 0
results.refinementGroups.size() == 0
}
def 'Return all offers of a product'() {
def results = OpenApiClient.withDefaultClient(apiKey).searchBuilder()
.term('8718066236500')
.limit(1)
.allOffers()
.search()
expect:
results.totalResultSize >= 1
results.products.size() == 1
def product = results.products.get(0)
println product.EAN
product.offerData.offers.size() >= 1
}
def 'Return cheapest offer of a product'() {
def results = OpenApiClient.withDefaultClient(apiKey).searchBuilder()
.term('8718066236500')
.limit(1)
.cheapestOffer()
.search()
expect:
results.totalResultSize >= 1
results.products.size() == 1
def product = results.products.get(0)
println product.EAN
product.offerData.offers.size() >= 1
}
def 'Can find out if the OpenAPI is healthy'() {
def status = OpenApiClient.withDefaultClient(apiKey).getHealthStatus()
expect:
status.healthy
status.message == ''
}
def 'Can get list of top selling products'() {
def results = OpenApiClient.withDefaultClient(apiKey).listBuilder()
.list()
expect:
results.totalResultSize > 0
results.products.size() > 0
results.categories.size() == 0
results.refinementGroups.size() == 0
}
}