From 958edbf43bf9851610173d04a52bdd23281224ff Mon Sep 17 00:00:00 2001 From: hwillson <hugh@octonary.com> Date: Wed, 23 Sep 2020 08:26:12 -0400 Subject: [PATCH] DRY adjust tests to re-use a common validation function --- src/core/__tests__/QueryManager/index.ts | 87 ++++-------------------- 1 file changed, 14 insertions(+), 73 deletions(-) diff --git a/src/core/__tests__/QueryManager/index.ts b/src/core/__tests__/QueryManager/index.ts index 421f3c454be..8bf08e5833b 100644 --- a/src/core/__tests__/QueryManager/index.ts +++ b/src/core/__tests__/QueryManager/index.ts @@ -5245,7 +5245,12 @@ describe('QueryManager', () => { console.warn = originalWarn; }); - itAsync('should show missing cache result fields warning when returnPartialData is false', (resolve, reject) => { + function validateWarnings( + resolve: (result?: any) => void, + reject: (reason?: any) => void, + returnPartialData = false, + expectedWarnCount = 1 + ) { const query1 = gql` query { car { @@ -5290,9 +5295,10 @@ describe('QueryManager', () => { const observable2 = queryManager.watchQuery<any>({ query: query2, fetchPolicy: 'cache-only', + returnPartialData, }); - observableToPromise( + return observableToPromise( { observable: observable1 }, result => { expect(result).toEqual({ @@ -5311,83 +5317,18 @@ describe('QueryManager', () => { networkStatus: NetworkStatus.ready, partial: true, }); - expect(warnCount).toBe(1); + expect(warnCount).toBe(expectedWarnCount); }, ).then(resolve, reject) }); + } + + itAsync('should show missing cache result fields warning when returnPartialData is false', (resolve, reject) => { + validateWarnings(resolve, reject, false, 1); }); itAsync('should not show missing cache result fields warning when returnPartialData is true', (resolve, reject) => { - const query1 = gql` - query { - car { - make - model - id - __typename - } - } - `; - - const query2 = gql` - query { - car { - make - model - vin - id - __typename - } - } - `; - - const data1 = { - car: { - make: 'Ford', - model: 'Pinto', - id: 123, - __typename: 'Car' - }, - }; - - const queryManager = mockQueryManager( - reject, - { - request: { query: query1 }, - result: { data: data1 }, - }, - ); - - const observable1 = queryManager.watchQuery<any>({ query: query1 }); - const observable2 = queryManager.watchQuery<any>({ - query: query2, - fetchPolicy: 'cache-only', - returnPartialData: true, - }); - - observableToPromise( - { observable: observable1 }, - result => { - expect(result).toEqual({ - loading: false, - data: data1, - networkStatus: NetworkStatus.ready, - }); - }, - ).then(() => { - observableToPromise( - { observable: observable2 }, - result => { - expect(result).toEqual({ - data: data1, - loading: false, - networkStatus: NetworkStatus.ready, - partial: true, - }); - expect(warnCount).toBe(0); - }, - ).then(resolve, reject) - }); + validateWarnings(resolve, reject, true, 0); }); }); });