diff --git a/CHANGELOG.md b/CHANGELOG.md index a75790d..ce1daa1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### vNEXT +- Add `result()`, `currentResult()`, `variables`, `setOptions`, `setVariables` [PR #29](https://github.com/kamilkisiela/apollo-client-rxjs/pull/29) ### v0.4.1 diff --git a/src/RxObservableQuery.ts b/src/RxObservableQuery.ts index 7cc78ae..4bd329e 100644 --- a/src/RxObservableQuery.ts +++ b/src/RxObservableQuery.ts @@ -54,6 +54,27 @@ export class RxObservableQuery extends Observable { return this.getObservableQuery().subscribeToMore(options); } + public result(): Promise> { + return this.getObservableQuery().result(); + } + + public currentResult(): ApolloQueryResult { + return this.getObservableQuery().currentResult(); + } + + public get variables(): any { + return this.getObservableQuery().variables; + } + + // XXX set ModifiableWatchQueryOptions as an interface of opts + public setOptions(opts: any): Promise> { + return this.getObservableQuery().setOptions(opts); + } + + public setVariables(variables: any, tryFetch: boolean = false): Promise> { + return this.getObservableQuery().setVariables(variables, tryFetch); + } + // where magic happens public _subscribe(subscriber: Subscriber) { diff --git a/tests/RxObservableQuery.ts b/tests/RxObservableQuery.ts index d9b354d..96bc30b 100644 --- a/tests/RxObservableQuery.ts +++ b/tests/RxObservableQuery.ts @@ -143,5 +143,41 @@ describe('RxObservableQuery', () => { assert.deepEqual(stubbed.args[0], [mapFn]); assert.equal(result, undefined); }); + + it('should be able to use result', () => { + stub(obsQuery, 'result').returns('promise'); + const promise = rxObsQuery.result(); + + assert.equal(promise, 'promise'); + }); + + it('should be able to use currentResult', () => { + stub(obsQuery, 'currentResult').returns('ApolloQueryResult'); + const result = rxObsQuery.currentResult(); + + assert.equal(result, 'ApolloQueryResult'); + }); + + it('should be able to get variables', () => { + assert.isTrue(rxObsQuery.variables === obsQuery.variables); + }); + + it('should be able to setOptions', () => { + const stubbed = stub(obsQuery, 'setOptions').returns('promise'); + const options = {}; + const promise = rxObsQuery.setOptions(options); + + assert.deepEqual(stubbed.args[0], [options]); + assert.equal(promise, 'promise'); + }); + + it('should be able to setVariables', () => { + const stubbed = stub(obsQuery, 'setVariables').returns('promise'); + const variables = {}; + const promise = rxObsQuery.setVariables(variables); + + assert.deepEqual(stubbed.args[0], [variables, false]); + assert.equal(promise, 'promise'); + }); }); });