Skip to content

Commit

Permalink
Merge cdedca7 into 2ed023b
Browse files Browse the repository at this point in the history
  • Loading branch information
Damon1024 committed Jan 28, 2022
2 parents 2ed023b + cdedca7 commit ccc1072
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 10 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## Unreleased

- [RB-184] Add support for abort signal

## 0.4.0

- [RB-175] Replace `body_style_description` with `body_style_code`
Expand Down
24 changes: 14 additions & 10 deletions lib/vehiclelinkApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,45 @@ class VehiclelinkApi {
this.bearerToken = bearerToken;
}

makeGetRequest() {
return {
makeGetRequest(opts) {
let request = {
method: 'GET',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${this.bearerToken}`,
},
};
if (opts.signal) {
request.signal = opts.signal;
}
return request;
}

fetchSegments() {
fetchSegments(opts = {}) {
const url = `${this.host}/segments`;
return request(url, this.makeGetRequest());
return request(url, this.makeGetRequest(opts));
}

fetchMakes(segmentCode) {
fetchMakes(segmentCode, opts = {}) {
const url = `${this.host}/segments/${segmentCode}/makes`;
return request(url, this.makeGetRequest());
return request(url, this.makeGetRequest(opts));
}

fetchFamilies(segmentCode, makeCode) {
fetchFamilies(segmentCode, makeCode, opts = {}) {
const params = new URLSearchParams();
params.append('make_code', makeCode);
const url = `${this.host}/segments/${segmentCode}/families?${params}`;
return request(url, this.makeGetRequest());
return request(url, this.makeGetRequest(opts));
}

fetchVehicles(segmentCode, makeCode, familyCode, bodyStyleCode) {
fetchVehicles(segmentCode, makeCode, familyCode, bodyStyleCode, opts = {}) {
const params = new URLSearchParams();
params.append('make_code', makeCode);
params.append('family_code', familyCode);
params.append('body_style_code', bodyStyleCode);
const url = `${this.host}/segments/${segmentCode}/vehicles?${params}`;
return request(url, this.makeGetRequest());
return request(url, this.makeGetRequest(opts));
}
}

Expand Down
23 changes: 23 additions & 0 deletions test/vehiclelinkApi.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,3 +192,26 @@ describe('fetchVehicles', () => {
});
});
});

describe('requestOptionsHandling', () => {
const controller = new AbortController();
const { signal } = controller;

beforeEach(() => {
nock(host).get('/segments').delay(10000).reply(200, `Passed`);
});

afterEach(() => {
nock.cleanAll();
});

it('should abort request', (done) => {
new VehiclelinkApi(host, bearerToken)
.fetchSegments({ signal })
.catch((err) => {
expect(err).toEqual(new Error('The user aborted a request.'));
done();
});
controller.abort();
});
});

0 comments on commit ccc1072

Please sign in to comment.