Skip to content

Commit 1d8d5bb

Browse files
authored
Validate params before request (#42)
* Update for flights * Update changelog * Validate parameters with corresponding class * Cleanup test * Simplify the test
1 parent 343d96a commit 1d8d5bb

9 files changed

+102
-61
lines changed

Diff for: CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.11.1] - 2021-09-07
9+
10+
### Changed
11+
12+
- Body parameters are validated before being sent to the API. This gives developers faster feedback as they develop their applications.
13+
814
## [1.11.0] - 2021-09-07
915

1016
### Added

Diff for: package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@patch-technology/patch",
3-
"version": "1.11.0",
3+
"version": "1.11.1",
44
"description": "Node.js wrapper for the Patch API",
55
"license": "MIT",
66
"repository": {

Diff for: src/ApiClient.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ApiClient {
1616
};
1717

1818
this.defaultHeaders = {
19-
'User-Agent': 'patch-node/1.11.0'
19+
'User-Agent': 'patch-node/1.11.1'
2020
};
2121

2222
/**

Diff for: src/api/EstimatesApi.js

+48-18
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,17 @@ export default class EstimatesApi {
2222
}
2323

2424
createBitcoinEstimateWithHttpInfo(createBitcoinEstimateRequest) {
25-
let postBody = createBitcoinEstimateRequest;
25+
const _createBitcoinEstimateRequest =
26+
CreateBitcoinEstimateRequest.constructFromObject(
27+
createBitcoinEstimateRequest,
28+
new CreateBitcoinEstimateRequest()
29+
);
30+
let postBody = _createBitcoinEstimateRequest;
2631

2732
// verify the required parameter 'createBitcoinEstimateRequest' is set
2833
if (
29-
createBitcoinEstimateRequest === undefined ||
30-
createBitcoinEstimateRequest === null
34+
_createBitcoinEstimateRequest === undefined ||
35+
_createBitcoinEstimateRequest === null
3136
) {
3237
throw new Error(
3338
"Missing the required parameter 'createBitcoinEstimateRequest' when calling createBitcoinEstimate"
@@ -64,12 +69,17 @@ export default class EstimatesApi {
6469
}
6570

6671
createEthereumEstimateWithHttpInfo(createEthereumEstimateRequest) {
67-
let postBody = createEthereumEstimateRequest;
72+
const _createEthereumEstimateRequest =
73+
CreateEthereumEstimateRequest.constructFromObject(
74+
createEthereumEstimateRequest,
75+
new CreateEthereumEstimateRequest()
76+
);
77+
let postBody = _createEthereumEstimateRequest;
6878

6979
// verify the required parameter 'createEthereumEstimateRequest' is set
7080
if (
71-
createEthereumEstimateRequest === undefined ||
72-
createEthereumEstimateRequest === null
81+
_createEthereumEstimateRequest === undefined ||
82+
_createEthereumEstimateRequest === null
7383
) {
7484
throw new Error(
7585
"Missing the required parameter 'createEthereumEstimateRequest' when calling createEthereumEstimate"
@@ -108,12 +118,17 @@ export default class EstimatesApi {
108118
}
109119

110120
createFlightEstimateWithHttpInfo(createFlightEstimateRequest) {
111-
let postBody = createFlightEstimateRequest;
121+
const _createFlightEstimateRequest =
122+
CreateFlightEstimateRequest.constructFromObject(
123+
createFlightEstimateRequest,
124+
new CreateFlightEstimateRequest()
125+
);
126+
let postBody = _createFlightEstimateRequest;
112127

113128
// verify the required parameter 'createFlightEstimateRequest' is set
114129
if (
115-
createFlightEstimateRequest === undefined ||
116-
createFlightEstimateRequest === null
130+
_createFlightEstimateRequest === undefined ||
131+
_createFlightEstimateRequest === null
117132
) {
118133
throw new Error(
119134
"Missing the required parameter 'createFlightEstimateRequest' when calling createFlightEstimate"
@@ -150,12 +165,17 @@ export default class EstimatesApi {
150165
}
151166

152167
createMassEstimateWithHttpInfo(createMassEstimateRequest) {
153-
let postBody = createMassEstimateRequest;
168+
const _createMassEstimateRequest =
169+
CreateMassEstimateRequest.constructFromObject(
170+
createMassEstimateRequest,
171+
new CreateMassEstimateRequest()
172+
);
173+
let postBody = _createMassEstimateRequest;
154174

155175
// verify the required parameter 'createMassEstimateRequest' is set
156176
if (
157-
createMassEstimateRequest === undefined ||
158-
createMassEstimateRequest === null
177+
_createMassEstimateRequest === undefined ||
178+
_createMassEstimateRequest === null
159179
) {
160180
throw new Error(
161181
"Missing the required parameter 'createMassEstimateRequest' when calling createMassEstimate"
@@ -192,12 +212,17 @@ export default class EstimatesApi {
192212
}
193213

194214
createShippingEstimateWithHttpInfo(createShippingEstimateRequest) {
195-
let postBody = createShippingEstimateRequest;
215+
const _createShippingEstimateRequest =
216+
CreateShippingEstimateRequest.constructFromObject(
217+
createShippingEstimateRequest,
218+
new CreateShippingEstimateRequest()
219+
);
220+
let postBody = _createShippingEstimateRequest;
196221

197222
// verify the required parameter 'createShippingEstimateRequest' is set
198223
if (
199-
createShippingEstimateRequest === undefined ||
200-
createShippingEstimateRequest === null
224+
_createShippingEstimateRequest === undefined ||
225+
_createShippingEstimateRequest === null
201226
) {
202227
throw new Error(
203228
"Missing the required parameter 'createShippingEstimateRequest' when calling createShippingEstimate"
@@ -236,12 +261,17 @@ export default class EstimatesApi {
236261
}
237262

238263
createVehicleEstimateWithHttpInfo(createVehicleEstimateRequest) {
239-
let postBody = createVehicleEstimateRequest;
264+
const _createVehicleEstimateRequest =
265+
CreateVehicleEstimateRequest.constructFromObject(
266+
createVehicleEstimateRequest,
267+
new CreateVehicleEstimateRequest()
268+
);
269+
let postBody = _createVehicleEstimateRequest;
240270

241271
// verify the required parameter 'createVehicleEstimateRequest' is set
242272
if (
243-
createVehicleEstimateRequest === undefined ||
244-
createVehicleEstimateRequest === null
273+
_createVehicleEstimateRequest === undefined ||
274+
_createVehicleEstimateRequest === null
245275
) {
246276
throw new Error(
247277
"Missing the required parameter 'createVehicleEstimateRequest' when calling createVehicleEstimate"

Diff for: src/api/OrdersApi.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,14 @@ export default class OrdersApi {
5858
}
5959

6060
createOrderWithHttpInfo(createOrderRequest) {
61-
let postBody = createOrderRequest;
61+
const _createOrderRequest = CreateOrderRequest.constructFromObject(
62+
createOrderRequest,
63+
new CreateOrderRequest()
64+
);
65+
let postBody = _createOrderRequest;
6266

6367
// verify the required parameter 'createOrderRequest' is set
64-
if (createOrderRequest === undefined || createOrderRequest === null) {
68+
if (_createOrderRequest === undefined || _createOrderRequest === null) {
6569
throw new Error(
6670
"Missing the required parameter 'createOrderRequest' when calling createOrder"
6771
);

Diff for: src/api/PreferencesApi.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,17 @@ export default class PreferencesApi {
1717
}
1818

1919
createPreferenceWithHttpInfo(createPreferenceRequest) {
20-
let postBody = createPreferenceRequest;
20+
const _createPreferenceRequest =
21+
CreatePreferenceRequest.constructFromObject(
22+
createPreferenceRequest,
23+
new CreatePreferenceRequest()
24+
);
25+
let postBody = _createPreferenceRequest;
2126

2227
// verify the required parameter 'createPreferenceRequest' is set
2328
if (
24-
createPreferenceRequest === undefined ||
25-
createPreferenceRequest === null
29+
_createPreferenceRequest === undefined ||
30+
_createPreferenceRequest === null
2631
) {
2732
throw new Error(
2833
"Missing the required parameter 'createPreferenceRequest' when calling createPreference"

Diff for: test/integration/estimates.test.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,11 @@ describe('Estimates Integration', function () {
8080
});
8181

8282
it('supports creating bitcoin estimates without parameters', async function () {
83-
const { data: estimate } = await patch.estimates.createBitcoinEstimate({
84-
create_order: false // TODO: this should work without this
85-
});
83+
const { data: estimate } = await patch.estimates.createBitcoinEstimate();
8684

8785
expect(estimate.type).to.be.eq('bitcoin');
8886
expect(estimate.mass_g).to.be.above(0);
8987
expect(estimate.production).to.be.eq(false);
90-
expect(estimate.order).to.be.eq(null);
9188
});
9289

9390
it('supports creating bitcoin estimates with a timestamp', async function () {

Diff for: test/integration/preferences.test.js

+29-30
Original file line numberDiff line numberDiff line change
@@ -2,45 +2,44 @@ import { expect } from 'chai';
22
import Patch from '../../dist/index';
33
const patch = Patch(process.env.SANDBOX_API_KEY);
44

5+
async function getProjectId() {
6+
const retrieveProjectResponse = await patch.projects.retrieveProjects();
7+
return retrieveProjectResponse.data[0].id;
8+
}
9+
510
describe('Preferences Integration', async function () {
611
it('supports creating, deleting, and listing preferences', async function () {
7-
const preferencesList = await patch.preferences.retrievePreferences();
8-
9-
// If there is an existing preference, delete it and create a new one with the same
10-
// project id. If there is not any existing preferences, create and delete one with
11-
// any project id.
12-
if (preferencesList.data.length > 0) {
13-
const preference = preferencesList.data[0];
14-
const projectId = preference.project.id;
15-
16-
await patch.preferences.deletePreference(preference.id);
17-
const createdPreference = await patch.preferences.createPreference({
18-
project_id: projectId
19-
});
20-
21-
expect(createdPreference.data.project.id).to.eq(projectId);
12+
const projectId = await getProjectId();
2213

23-
const preferencesList2 = await patch.preferences.retrievePreferences();
24-
expect(preferencesList2.data.length).to.be.above(0);
25-
} else {
26-
const projectResponse = await patch.projects.retrieveProjects();
27-
expect(projectResponse.data.length).to.be.above(0);
28-
const projectId = projectResponse.data[0].id;
14+
let preferenceId;
2915

16+
try {
3017
const createdPreference = await patch.preferences.createPreference({
3118
project_id: projectId
3219
});
20+
preferenceId = createdPreference.data.id;
21+
} catch (err) {
22+
if (
23+
!/Your organization already has a preferred project/.test(
24+
err.error.message
25+
)
26+
) {
27+
throw err;
28+
}
29+
const preferencesList = await patch.preferences.retrievePreferences();
30+
preferenceId = preferencesList.data[0].id;
31+
}
3332

34-
expect(createdPreference.data.projectId).to.eq(projectId);
35-
36-
const preferencesList2 = await patch.preferences.retrievePreferences();
37-
const preferencesCount = preferencesList2.data.length;
38-
expect(preferencesList2.data.length).to.be.above(0);
33+
const preferencesList = await patch.preferences.retrievePreferences();
34+
expect(preferencesList.data.length).to.be.above(0);
3935

40-
await patch.preferences.deletePreference(preference.id);
36+
const preferencesResponse = await patch.preferences.retrievePreference(
37+
preferenceId
38+
);
39+
expect(preferencesResponse.data.id).to.eq(preferenceId);
4140

42-
const preferencesList3 = await patch.preferences.retrievePreferences();
43-
expect(preferencesList3.data.length).to.eq(preferencesCount - 1);
44-
}
41+
const deletePreferenceResponse =
42+
await patch.preferences.retrievePreferences(preferenceId);
43+
expect(deletePreferenceResponse.data[0].id).to.eq(preferenceId);
4544
});
4645
});

0 commit comments

Comments
 (0)