Skip to content

Commit 7f2d3d6

Browse files
spirosikmdshuisman
authored andcommitted
fix(resource): use initial params for subsequent iteration requests (#34)
1 parent 0b534e0 commit 7f2d3d6

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/resources/resource.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class Resource {
1212
this.signatureFactory = signatureFactory;
1313
this.config = config;
1414
this.str = '';
15+
this.queryParams = {};
1516
}
1617

1718
handleOnData(newJsonString) {
@@ -27,7 +28,10 @@ class Resource {
2728
this._results = this._results.concat(this.answer.items);
2829

2930
if (this.answer.hasMore && this.config.iterator) {
30-
this._query = Object.assign(this._query, {params: {since: this.answer.lastTimestamp}});
31+
// Delete since to be replaced by since of new answer
32+
delete this.queryParams.since;
33+
const params = Object.assign({}, {since: this.answer.lastTimestamp}, this.queryParams);
34+
this._query = Object.assign(this._query, {params});
3135
this.get(this._query, this._results).then((results) => {
3236
resolve(results);
3337
});
@@ -62,6 +66,7 @@ class Resource {
6266
get(query, results) {
6367
this._query = query || {};
6468
this._results = results || [];
69+
this.queryParams = this._query.params || {};
6570

6671
this.signatureFactory.setUrl(this.url);
6772
this.signatureFactory.setHeaders(Resource.getDefaultHeaders(packageJson.version));

test/resources/resource.spec.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,20 @@ describe('Resource', function() {
6767
it('calls get with query and updated results if hasMore and iterator is true', function() {
6868
this.resource._results = [{id: 'foo'}];
6969
this.resource._query = {
70-
baz: 'bax'
70+
id: 'foo',
71+
params: {
72+
limit: 10,
73+
}
7174
};
75+
this.resource.queryParams = {limit: 10};
7276
this.resource.config.iterator = true;
7377
this.resource.str = '{"items": [{"id": "bar"}], "hasMore": true, "lastTimestamp": 1}';
7478
spyOn(this.resource, 'get').and.returnValue(Promise.resolve());
7579
this.resource.handleOnEnd(this.spies.resolve, this.spies.reject);
7680
expect(this.resource.get).toHaveBeenCalledWith({
77-
baz: 'bax',
81+
id: 'foo',
7882
params: {
83+
limit: 10,
7984
since: 1
8085
}
8186
}, [{id: 'foo'}, {id: 'bar'}]);

0 commit comments

Comments
 (0)