btrz-api-client 9.25.0 → 9.26.0
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/lib/client-standalone-min.js +9 -9
- package/lib/client.js +4 -0
- package/lib/endpoints/inventory/clover-terminals.js +181 -0
- package/package.json +1 -1
- package/src/client.js +1 -0
- package/src/endpoints/inventory/clover-terminals.js +156 -0
- package/test/all.test.js +1 -0
- package/test/endpoints/inventory/clover-terminals.test.js +256 -0
package/lib/client.js
CHANGED
|
@@ -191,6 +191,10 @@ function createInventory({
|
|
|
191
191
|
client,
|
|
192
192
|
internalAuthTokenProvider
|
|
193
193
|
}),
|
|
194
|
+
cloverTerminals: require("./endpoints/inventory/clover-terminals.js")({
|
|
195
|
+
client,
|
|
196
|
+
internalAuthTokenProvider
|
|
197
|
+
}),
|
|
194
198
|
giftCertificateDefinitions: require("./endpoints/inventory/gift-certificate-definitions.js")({
|
|
195
199
|
client,
|
|
196
200
|
internalAuthTokenProvider
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
const {
|
|
2
|
+
authorizationHeaders
|
|
3
|
+
} = require("../endpoints_helpers.js");
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Query params for GET /clover-terminals (btrz-api-inventory). See get-handler getSpec().
|
|
7
|
+
* @typedef {Object} CloverTerminalsQuery
|
|
8
|
+
* @property {number} [page] - The page number to retrieve
|
|
9
|
+
* @property {string} [stationId] - Filter terminals by station (location) ID
|
|
10
|
+
* @property {string} [serialNumber] - Filter terminals by serial number
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Factory for clover-terminals API (btrz-api-inventory).
|
|
15
|
+
* @param {Object} deps
|
|
16
|
+
* @param {import("axios").AxiosInstance} deps.client
|
|
17
|
+
* @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
|
|
18
|
+
* @returns {{ all: function, get: function, create: function, remove: function, update: function }}
|
|
19
|
+
*/
|
|
20
|
+
function cloverTerminalFactory({
|
|
21
|
+
client,
|
|
22
|
+
internalAuthTokenProvider
|
|
23
|
+
}) {
|
|
24
|
+
/**
|
|
25
|
+
* GET /clover-terminals - list Clover terminals (paginated).
|
|
26
|
+
* @param {Object} opts
|
|
27
|
+
* @param {string} [opts.token] - API key
|
|
28
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
29
|
+
* @param {CloverTerminalsQuery} [opts.query] - Query params (page, stationId, serialNumber)
|
|
30
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
31
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminals: Array, next?: string, previous?: string, count: number }>>}
|
|
32
|
+
* @throws When response is 4xx/5xx (400 INVALID_PAGE, 401, 500)
|
|
33
|
+
*/
|
|
34
|
+
function all({
|
|
35
|
+
token,
|
|
36
|
+
jwtToken,
|
|
37
|
+
query = {},
|
|
38
|
+
headers
|
|
39
|
+
}) {
|
|
40
|
+
return client.get("/clover-terminals", {
|
|
41
|
+
params: query,
|
|
42
|
+
headers: authorizationHeaders({
|
|
43
|
+
token,
|
|
44
|
+
jwtToken,
|
|
45
|
+
internalAuthTokenProvider,
|
|
46
|
+
headers
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* GET /clover-terminals/:cloverTerminalId - get a Clover terminal by id.
|
|
53
|
+
* @param {Object} opts
|
|
54
|
+
* @param {string} [opts.token] - API key
|
|
55
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
56
|
+
* @param {string} opts.cloverTerminalId - Clover terminal id (24 hex characters)
|
|
57
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
58
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminal: Object }>>}
|
|
59
|
+
* @throws When response is 4xx/5xx (400 INVALID_CLOVER_TERMINAL_ID, 401, 404 CLOVER_TERMINAL_NOT_FOUND, 500)
|
|
60
|
+
*/
|
|
61
|
+
function get({
|
|
62
|
+
cloverTerminalId,
|
|
63
|
+
token,
|
|
64
|
+
jwtToken,
|
|
65
|
+
headers
|
|
66
|
+
}) {
|
|
67
|
+
return client.get(`/clover-terminals/${cloverTerminalId}`, {
|
|
68
|
+
headers: authorizationHeaders({
|
|
69
|
+
token,
|
|
70
|
+
jwtToken,
|
|
71
|
+
internalAuthTokenProvider,
|
|
72
|
+
headers
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* POST /clover-terminals - create Clover terminal.
|
|
79
|
+
* @param {Object} opts
|
|
80
|
+
* @param {string} [opts.token] - API key
|
|
81
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
82
|
+
* @param {Object} opts.cloverTerminal - Clover terminal payload (name, serialNumber, stationId optional)
|
|
83
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
84
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminal: Object }>>}
|
|
85
|
+
* @throws When response is 4xx/5xx (400 WRONG_DATA/INVALID_STATION_ID/STATION_NOT_FOUND, 401, 409 duplicate name/serial, 500)
|
|
86
|
+
*/
|
|
87
|
+
function create({
|
|
88
|
+
jwtToken,
|
|
89
|
+
token,
|
|
90
|
+
cloverTerminal,
|
|
91
|
+
headers
|
|
92
|
+
}) {
|
|
93
|
+
return client({
|
|
94
|
+
url: "/clover-terminals",
|
|
95
|
+
method: "post",
|
|
96
|
+
headers: authorizationHeaders({
|
|
97
|
+
token,
|
|
98
|
+
jwtToken,
|
|
99
|
+
internalAuthTokenProvider,
|
|
100
|
+
headers
|
|
101
|
+
}),
|
|
102
|
+
data: {
|
|
103
|
+
cloverTerminal
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* DELETE /clover-terminals/:cloverTerminalId - remove Clover terminal.
|
|
110
|
+
* @param {Object} opts
|
|
111
|
+
* @param {string} [opts.token] - API key
|
|
112
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
113
|
+
* @param {string} opts.cloverTerminalId - Clover terminal id (24 hex characters)
|
|
114
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
115
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminalId: string }>>}
|
|
116
|
+
* @throws When response is 4xx/5xx (400 INVALID_CLOVER_TERMINAL_ID, 401, 404 CLOVER_TERMINAL_NOT_FOUND, 500)
|
|
117
|
+
*/
|
|
118
|
+
function remove({
|
|
119
|
+
jwtToken,
|
|
120
|
+
cloverTerminalId,
|
|
121
|
+
token,
|
|
122
|
+
headers
|
|
123
|
+
}) {
|
|
124
|
+
return client({
|
|
125
|
+
url: `/clover-terminals/${cloverTerminalId}`,
|
|
126
|
+
method: "delete",
|
|
127
|
+
headers: authorizationHeaders({
|
|
128
|
+
token,
|
|
129
|
+
jwtToken,
|
|
130
|
+
internalAuthTokenProvider,
|
|
131
|
+
headers
|
|
132
|
+
})
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* PUT /clover-terminals/:cloverTerminalId - update Clover terminal.
|
|
138
|
+
* @param {Object} opts
|
|
139
|
+
* @param {string} [opts.token] - API key
|
|
140
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
141
|
+
* @param {string} opts.cloverTerminalId - Clover terminal id (24 hex characters)
|
|
142
|
+
* @param {Object} opts.cloverTerminal - Clover terminal payload (name, serialNumber, stationId)
|
|
143
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
144
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminal: Object }>>}
|
|
145
|
+
* @throws When response is 4xx/5xx (400, 401, 404 CLOVER_TERMINAL_NOT_FOUND, 409 duplicate name/serial, 500)
|
|
146
|
+
*/
|
|
147
|
+
function update({
|
|
148
|
+
jwtToken,
|
|
149
|
+
token,
|
|
150
|
+
cloverTerminalId,
|
|
151
|
+
cloverTerminal,
|
|
152
|
+
headers
|
|
153
|
+
}) {
|
|
154
|
+
const _cloverTerminalId = cloverTerminalId || cloverTerminal._id;
|
|
155
|
+
return client({
|
|
156
|
+
url: `/clover-terminals/${_cloverTerminalId}`,
|
|
157
|
+
method: "put",
|
|
158
|
+
headers: authorizationHeaders({
|
|
159
|
+
token,
|
|
160
|
+
jwtToken,
|
|
161
|
+
internalAuthTokenProvider,
|
|
162
|
+
headers
|
|
163
|
+
}),
|
|
164
|
+
data: {
|
|
165
|
+
cloverTerminal: {
|
|
166
|
+
name: cloverTerminal.name,
|
|
167
|
+
serialNumber: cloverTerminal.serialNumber,
|
|
168
|
+
stationId: cloverTerminal.stationId
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
all,
|
|
175
|
+
get,
|
|
176
|
+
create,
|
|
177
|
+
remove,
|
|
178
|
+
update
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
module.exports = cloverTerminalFactory;
|
package/package.json
CHANGED
package/src/client.js
CHANGED
|
@@ -86,6 +86,7 @@ function createInventory({baseURL, headers, timeout, overrideFn, internalAuthTok
|
|
|
86
86
|
garages: require("./endpoints/inventory/garages.js")({client, internalAuthTokenProvider}),
|
|
87
87
|
banorteTerminals: require("./endpoints/inventory/banorte-terminals.js")({client, internalAuthTokenProvider}),
|
|
88
88
|
getnetTerminals: require("./endpoints/inventory/getnet-terminals.js")({client, internalAuthTokenProvider}),
|
|
89
|
+
cloverTerminals: require("./endpoints/inventory/clover-terminals.js")({client, internalAuthTokenProvider}),
|
|
89
90
|
giftCertificateDefinitions: require("./endpoints/inventory/gift-certificate-definitions.js")({client, internalAuthTokenProvider}),
|
|
90
91
|
healthCheck: require("./endpoints/inventory/healthcheck.js")({client, internalAuthTokenProvider}),
|
|
91
92
|
holidays: require("./endpoints/inventory/holidays.js")({client, internalAuthTokenProvider}),
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
const {
|
|
2
|
+
authorizationHeaders
|
|
3
|
+
} = require("../endpoints_helpers.js");
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Query params for GET /clover-terminals (btrz-api-inventory). See get-handler getSpec().
|
|
7
|
+
* @typedef {Object} CloverTerminalsQuery
|
|
8
|
+
* @property {number} [page] - The page number to retrieve
|
|
9
|
+
* @property {string} [stationId] - Filter terminals by station (location) ID
|
|
10
|
+
* @property {string} [serialNumber] - Filter terminals by serial number
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Factory for clover-terminals API (btrz-api-inventory).
|
|
15
|
+
* @param {Object} deps
|
|
16
|
+
* @param {import("axios").AxiosInstance} deps.client
|
|
17
|
+
* @param {{ getToken: function(): string }} [deps.internalAuthTokenProvider]
|
|
18
|
+
* @returns {{ all: function, get: function, create: function, remove: function, update: function }}
|
|
19
|
+
*/
|
|
20
|
+
function cloverTerminalFactory({client, internalAuthTokenProvider}) {
|
|
21
|
+
/**
|
|
22
|
+
* GET /clover-terminals - list Clover terminals (paginated).
|
|
23
|
+
* @param {Object} opts
|
|
24
|
+
* @param {string} [opts.token] - API key
|
|
25
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
26
|
+
* @param {CloverTerminalsQuery} [opts.query] - Query params (page, stationId, serialNumber)
|
|
27
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
28
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminals: Array, next?: string, previous?: string, count: number }>>}
|
|
29
|
+
* @throws When response is 4xx/5xx (400 INVALID_PAGE, 401, 500)
|
|
30
|
+
*/
|
|
31
|
+
function all({
|
|
32
|
+
token,
|
|
33
|
+
jwtToken,
|
|
34
|
+
query = {},
|
|
35
|
+
headers
|
|
36
|
+
}) {
|
|
37
|
+
return client.get("/clover-terminals", {
|
|
38
|
+
params: query,
|
|
39
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* GET /clover-terminals/:cloverTerminalId - get a Clover terminal by id.
|
|
45
|
+
* @param {Object} opts
|
|
46
|
+
* @param {string} [opts.token] - API key
|
|
47
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
48
|
+
* @param {string} opts.cloverTerminalId - Clover terminal id (24 hex characters)
|
|
49
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
50
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminal: Object }>>}
|
|
51
|
+
* @throws When response is 4xx/5xx (400 INVALID_CLOVER_TERMINAL_ID, 401, 404 CLOVER_TERMINAL_NOT_FOUND, 500)
|
|
52
|
+
*/
|
|
53
|
+
function get({
|
|
54
|
+
cloverTerminalId,
|
|
55
|
+
token,
|
|
56
|
+
jwtToken,
|
|
57
|
+
headers
|
|
58
|
+
}) {
|
|
59
|
+
return client.get(`/clover-terminals/${cloverTerminalId}`, {
|
|
60
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* POST /clover-terminals - create Clover terminal.
|
|
66
|
+
* @param {Object} opts
|
|
67
|
+
* @param {string} [opts.token] - API key
|
|
68
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
69
|
+
* @param {Object} opts.cloverTerminal - Clover terminal payload (name, serialNumber, stationId optional)
|
|
70
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
71
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminal: Object }>>}
|
|
72
|
+
* @throws When response is 4xx/5xx (400 WRONG_DATA/INVALID_STATION_ID/STATION_NOT_FOUND, 401, 409 duplicate name/serial, 500)
|
|
73
|
+
*/
|
|
74
|
+
function create({
|
|
75
|
+
jwtToken,
|
|
76
|
+
token,
|
|
77
|
+
cloverTerminal,
|
|
78
|
+
headers
|
|
79
|
+
}) {
|
|
80
|
+
return client({
|
|
81
|
+
url: "/clover-terminals",
|
|
82
|
+
method: "post",
|
|
83
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
|
|
84
|
+
data: {
|
|
85
|
+
cloverTerminal
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* DELETE /clover-terminals/:cloverTerminalId - remove Clover terminal.
|
|
92
|
+
* @param {Object} opts
|
|
93
|
+
* @param {string} [opts.token] - API key
|
|
94
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
95
|
+
* @param {string} opts.cloverTerminalId - Clover terminal id (24 hex characters)
|
|
96
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
97
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminalId: string }>>}
|
|
98
|
+
* @throws When response is 4xx/5xx (400 INVALID_CLOVER_TERMINAL_ID, 401, 404 CLOVER_TERMINAL_NOT_FOUND, 500)
|
|
99
|
+
*/
|
|
100
|
+
function remove({
|
|
101
|
+
jwtToken,
|
|
102
|
+
cloverTerminalId,
|
|
103
|
+
token,
|
|
104
|
+
headers
|
|
105
|
+
}) {
|
|
106
|
+
return client({
|
|
107
|
+
url: `/clover-terminals/${cloverTerminalId}`,
|
|
108
|
+
method: "delete",
|
|
109
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers})
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* PUT /clover-terminals/:cloverTerminalId - update Clover terminal.
|
|
115
|
+
* @param {Object} opts
|
|
116
|
+
* @param {string} [opts.token] - API key
|
|
117
|
+
* @param {string} [opts.jwtToken] - JWT or internal auth symbol
|
|
118
|
+
* @param {string} opts.cloverTerminalId - Clover terminal id (24 hex characters)
|
|
119
|
+
* @param {Object} opts.cloverTerminal - Clover terminal payload (name, serialNumber, stationId)
|
|
120
|
+
* @param {Object} [opts.headers] - Optional headers
|
|
121
|
+
* @returns {Promise<import("axios").AxiosResponse<{ cloverTerminal: Object }>>}
|
|
122
|
+
* @throws When response is 4xx/5xx (400, 401, 404 CLOVER_TERMINAL_NOT_FOUND, 409 duplicate name/serial, 500)
|
|
123
|
+
*/
|
|
124
|
+
function update({
|
|
125
|
+
jwtToken,
|
|
126
|
+
token,
|
|
127
|
+
cloverTerminalId,
|
|
128
|
+
cloverTerminal,
|
|
129
|
+
headers
|
|
130
|
+
}) {
|
|
131
|
+
const _cloverTerminalId = cloverTerminalId || cloverTerminal._id;
|
|
132
|
+
|
|
133
|
+
return client({
|
|
134
|
+
url: `/clover-terminals/${_cloverTerminalId}`,
|
|
135
|
+
method: "put",
|
|
136
|
+
headers: authorizationHeaders({token, jwtToken, internalAuthTokenProvider, headers}),
|
|
137
|
+
data: {
|
|
138
|
+
cloverTerminal: {
|
|
139
|
+
name: cloverTerminal.name,
|
|
140
|
+
serialNumber: cloverTerminal.serialNumber,
|
|
141
|
+
stationId: cloverTerminal.stationId
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return {
|
|
148
|
+
all,
|
|
149
|
+
get,
|
|
150
|
+
create,
|
|
151
|
+
remove,
|
|
152
|
+
update
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
module.exports = cloverTerminalFactory;
|
package/test/all.test.js
CHANGED
|
@@ -98,6 +98,7 @@ require("./endpoints/inventory/filtered-trips.test.js");
|
|
|
98
98
|
require("./endpoints/inventory/financing-costs.test.js");
|
|
99
99
|
require("./endpoints/inventory/garages.test.js");
|
|
100
100
|
require("./endpoints/inventory/banorte-terminals.test.js");
|
|
101
|
+
require("./endpoints/inventory/clover-terminals.test.js");
|
|
101
102
|
require("./endpoints/inventory/getnet-terminals.test.js");
|
|
102
103
|
require("./endpoints/inventory/gift-certificate-definitions.test.js");
|
|
103
104
|
require("./endpoints/inventory/holidays.test.js");
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
describe("inventory/clover-terminals", () => {
|
|
2
|
+
const assert = require("node:assert/strict");
|
|
3
|
+
const {
|
|
4
|
+
axiosMock,
|
|
5
|
+
expectRequest
|
|
6
|
+
} = require("../../test-helpers.js");
|
|
7
|
+
const api = require("../../../src/client.js").createApiClient({
|
|
8
|
+
baseURL: "http://test.com"
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
const token = "I owe you a token";
|
|
12
|
+
const jwtToken = "I owe you a JWT token";
|
|
13
|
+
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
axiosMock.restore();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("should retrieve a list of Clover terminals", () => {
|
|
19
|
+
const query = {page: 2, stationId: "5f243d100617680712e78dd7", serialNumber: "DEV-001"};
|
|
20
|
+
|
|
21
|
+
axiosMock.onGet("/clover-terminals", {params: query}).reply(expectRequest({
|
|
22
|
+
statusCode: 200, token, jwtToken
|
|
23
|
+
}));
|
|
24
|
+
|
|
25
|
+
return api.inventory.cloverTerminals.all({
|
|
26
|
+
jwtToken,
|
|
27
|
+
token,
|
|
28
|
+
query
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("should retrieve an existing Clover terminal by id", () => {
|
|
33
|
+
const cloverTerminalId = "1234123412341234";
|
|
34
|
+
|
|
35
|
+
axiosMock.onGet(`/clover-terminals/${cloverTerminalId}`).reply(expectRequest({
|
|
36
|
+
statusCode: 200, token, jwtToken
|
|
37
|
+
}));
|
|
38
|
+
|
|
39
|
+
return api.inventory.cloverTerminals.get({
|
|
40
|
+
jwtToken,
|
|
41
|
+
token,
|
|
42
|
+
cloverTerminalId
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("should create a new Clover terminal", async () => {
|
|
47
|
+
const cloverTerminal = {
|
|
48
|
+
name: "New Clover Terminal",
|
|
49
|
+
serialNumber: "Test Serial Number"
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
axiosMock.onPost("/clover-terminals").reply(expectRequest({
|
|
53
|
+
statusCode: 200, token, jwtToken, body: {cloverTerminal}
|
|
54
|
+
}));
|
|
55
|
+
|
|
56
|
+
return api.inventory.cloverTerminals.create({
|
|
57
|
+
jwtToken,
|
|
58
|
+
token,
|
|
59
|
+
cloverTerminal
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("should create a new Clover terminal with stationId (location)", async () => {
|
|
64
|
+
const cloverTerminal = {
|
|
65
|
+
name: "Clover Terminal at Station",
|
|
66
|
+
serialNumber: "SN-001",
|
|
67
|
+
stationId: "5f243d100617680712e78dd7"
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
axiosMock.onPost("/clover-terminals").reply(expectRequest({
|
|
71
|
+
statusCode: 200, token, jwtToken, body: {cloverTerminal}
|
|
72
|
+
}));
|
|
73
|
+
|
|
74
|
+
return api.inventory.cloverTerminals.create({
|
|
75
|
+
jwtToken,
|
|
76
|
+
token,
|
|
77
|
+
cloverTerminal
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("should delete a Clover terminal", () => {
|
|
82
|
+
const cloverTerminalId = "1234";
|
|
83
|
+
|
|
84
|
+
axiosMock.onDelete(`/clover-terminals/${cloverTerminalId}`).reply(expectRequest({
|
|
85
|
+
statusCode: 200, token, jwtToken
|
|
86
|
+
}));
|
|
87
|
+
|
|
88
|
+
return api.inventory.cloverTerminals.remove({
|
|
89
|
+
jwtToken,
|
|
90
|
+
token,
|
|
91
|
+
cloverTerminalId
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("should update an existing Clover terminal", async () => {
|
|
96
|
+
const cloverTerminal = {
|
|
97
|
+
_id: "terminal-id-123",
|
|
98
|
+
name: "Updated Clover Terminal",
|
|
99
|
+
serialNumber: "Updated Serial Number"
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const cloverTerminalFieldsToUpdate = {
|
|
103
|
+
name: cloverTerminal.name,
|
|
104
|
+
serialNumber: cloverTerminal.serialNumber,
|
|
105
|
+
stationId: cloverTerminal.stationId
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
axiosMock.onPut(`/clover-terminals/${cloverTerminal._id}`).reply(expectRequest({
|
|
109
|
+
statusCode: 200, token, jwtToken, body: {cloverTerminal: cloverTerminalFieldsToUpdate}
|
|
110
|
+
}));
|
|
111
|
+
|
|
112
|
+
return api.inventory.cloverTerminals.update({
|
|
113
|
+
jwtToken,
|
|
114
|
+
token,
|
|
115
|
+
cloverTerminal
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it("should update an existing Clover terminal with stationId (location)", async () => {
|
|
120
|
+
const cloverTerminalId = "terminal-id-456";
|
|
121
|
+
const cloverTerminal = {
|
|
122
|
+
_id: cloverTerminalId,
|
|
123
|
+
name: "Terminal at Station",
|
|
124
|
+
serialNumber: "SN-789",
|
|
125
|
+
stationId: "5f243d100617680712e78dd7"
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const expectedBody = {
|
|
129
|
+
cloverTerminal: {
|
|
130
|
+
name: cloverTerminal.name,
|
|
131
|
+
serialNumber: cloverTerminal.serialNumber,
|
|
132
|
+
stationId: cloverTerminal.stationId
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
axiosMock.onPut(`/clover-terminals/${cloverTerminalId}`).reply(expectRequest({
|
|
137
|
+
statusCode: 200, token, jwtToken, body: expectedBody
|
|
138
|
+
}));
|
|
139
|
+
|
|
140
|
+
return api.inventory.cloverTerminals.update({
|
|
141
|
+
jwtToken,
|
|
142
|
+
token,
|
|
143
|
+
cloverTerminalId,
|
|
144
|
+
cloverTerminal
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it("should update an existing Clover terminal with empty stationId", async () => {
|
|
149
|
+
const cloverTerminal = {
|
|
150
|
+
_id: "terminal-id-999",
|
|
151
|
+
name: "Terminal No Location",
|
|
152
|
+
serialNumber: "SN-999",
|
|
153
|
+
stationId: ""
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
const expectedBody = {
|
|
157
|
+
cloverTerminal: {
|
|
158
|
+
name: cloverTerminal.name,
|
|
159
|
+
serialNumber: cloverTerminal.serialNumber,
|
|
160
|
+
stationId: ""
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
axiosMock.onPut(`/clover-terminals/${cloverTerminal._id}`).reply(expectRequest({
|
|
165
|
+
statusCode: 200, token, jwtToken, body: expectedBody
|
|
166
|
+
}));
|
|
167
|
+
|
|
168
|
+
return api.inventory.cloverTerminals.update({
|
|
169
|
+
jwtToken,
|
|
170
|
+
token,
|
|
171
|
+
cloverTerminal
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it("should reject when Clover terminal is not found", async () => {
|
|
176
|
+
const cloverTerminalId = "5f243d100617680712e78dd7";
|
|
177
|
+
|
|
178
|
+
axiosMock.onGet(`/clover-terminals/${cloverTerminalId}`).reply(404, {
|
|
179
|
+
code: "CLOVER_TERMINAL_NOT_FOUND"
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
await assert.rejects(
|
|
183
|
+
() => {
|
|
184
|
+
return api.inventory.cloverTerminals.get({jwtToken, token, cloverTerminalId});
|
|
185
|
+
},
|
|
186
|
+
(err) => {
|
|
187
|
+
assert.equal(err.response.status, 404);
|
|
188
|
+
assert.equal(err.response.data.code, "CLOVER_TERMINAL_NOT_FOUND");
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it("should reject when Clover terminal id is invalid", async () => {
|
|
195
|
+
const cloverTerminalId = "not-an-object-id";
|
|
196
|
+
|
|
197
|
+
axiosMock.onGet(`/clover-terminals/${cloverTerminalId}`).reply(400, {
|
|
198
|
+
code: "INVALID_CLOVER_TERMINAL_ID"
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
await assert.rejects(
|
|
202
|
+
() => {
|
|
203
|
+
return api.inventory.cloverTerminals.get({jwtToken, token, cloverTerminalId});
|
|
204
|
+
},
|
|
205
|
+
(err) => {
|
|
206
|
+
assert.equal(err.response.status, 400);
|
|
207
|
+
assert.equal(err.response.data.code, "INVALID_CLOVER_TERMINAL_ID");
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
);
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
it("should reject when Clover terminal name is duplicated", async () => {
|
|
214
|
+
const cloverTerminal = {
|
|
215
|
+
name: "Duplicate Name",
|
|
216
|
+
serialNumber: "SN-UNIQUE"
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
axiosMock.onPost("/clover-terminals").reply(409, {
|
|
220
|
+
code: "DUPLICATED_CLOVER_TERMINAL_NAME"
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
await assert.rejects(
|
|
224
|
+
() => {
|
|
225
|
+
return api.inventory.cloverTerminals.create({jwtToken, token, cloverTerminal});
|
|
226
|
+
},
|
|
227
|
+
(err) => {
|
|
228
|
+
assert.equal(err.response.status, 409);
|
|
229
|
+
assert.equal(err.response.data.code, "DUPLICATED_CLOVER_TERMINAL_NAME");
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
);
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
it("should reject when Clover terminal serial number is duplicated", async () => {
|
|
236
|
+
const cloverTerminal = {
|
|
237
|
+
name: "Unique Name",
|
|
238
|
+
serialNumber: "SN-DUPLICATE"
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
axiosMock.onPost("/clover-terminals").reply(409, {
|
|
242
|
+
code: "DUPLICATE_CLOVER_TERMINAL_SERIAL_NUMBER"
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
await assert.rejects(
|
|
246
|
+
() => {
|
|
247
|
+
return api.inventory.cloverTerminals.create({jwtToken, token, cloverTerminal});
|
|
248
|
+
},
|
|
249
|
+
(err) => {
|
|
250
|
+
assert.equal(err.response.status, 409);
|
|
251
|
+
assert.equal(err.response.data.code, "DUPLICATE_CLOVER_TERMINAL_SERIAL_NUMBER");
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
);
|
|
255
|
+
});
|
|
256
|
+
});
|