From b48bbfc8f8ba1fe7805f4db6f03d7c50187c8427 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Wed, 7 Oct 2020 14:01:41 -0500 Subject: [PATCH 1/2] feat(query/distinct): Support read preference --- src/ParseQuery.js | 1 + src/__tests__/ParseQuery-test.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/ParseQuery.js b/src/ParseQuery.js index 40890829c..172c60a87 100644 --- a/src/ParseQuery.js +++ b/src/ParseQuery.js @@ -744,6 +744,7 @@ class ParseQuery { distinct: key, where: this._where, hint: this._hint, + readPreference: this._readPreference, }; return controller.aggregate( this.className, diff --git a/src/__tests__/ParseQuery-test.js b/src/__tests__/ParseQuery-test.js index abe148f4c..d5b50e6af 100644 --- a/src/__tests__/ParseQuery-test.js +++ b/src/__tests__/ParseQuery-test.js @@ -2368,6 +2368,27 @@ describe('ParseQuery', () => { }); }); + it('can issue an distinct query with read preference', async() => { + CoreManager.setQueryController({ + find() {}, + aggregate(className, params, options) { + expect(className).toBe('Item'); + expect(params.readPreference).toEqual('SECONDARY'); + expect(params.distinct).toEqual('size'); + expect(params.hint).toEqual(undefined); + expect(params.where).toEqual({}); + expect(options.useMasterKey).toEqual(true); + return Promise.resolve({ + results: [] + }); + } + }); + const q = new ParseQuery('Item'); + q.readPreference('SECONDARY'); + const results = await q.distinct('size', { sessionToken: '1234' }); + expect(results).toEqual([]); + }); + it('can issue an aggregate query with array pipeline', (done) => { const pipeline = [ { group: { objectId: '$name' } } From 39513f07e9a5de4a4151ba790eb626236ff2544f Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Wed, 7 Oct 2020 14:13:24 -0500 Subject: [PATCH 2/2] Improve tests --- src/__tests__/ParseQuery-test.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/__tests__/ParseQuery-test.js b/src/__tests__/ParseQuery-test.js index d5b50e6af..2450c7137 100644 --- a/src/__tests__/ParseQuery-test.js +++ b/src/__tests__/ParseQuery-test.js @@ -2290,7 +2290,9 @@ describe('ParseQuery', () => { distinct: 'size', where: { size: 'small' - } + }, + hint: undefined, + readPreference: null, }); expect(options.useMasterKey).toEqual(true); expect(options.requestTask).toBeDefined(); @@ -2316,7 +2318,9 @@ describe('ParseQuery', () => { distinct: 'size', where: { size: 'small' - } + }, + hint: undefined, + readPreference: null, }); expect(options.useMasterKey).toEqual(true); expect(options.sessionToken).toEqual('1234'); @@ -2348,6 +2352,7 @@ describe('ParseQuery', () => { size: 'small' }, hint: '_id_', + readPreference: null, }); expect(options.useMasterKey).toEqual(true); expect(options.sessionToken).toEqual('1234');