From 67a12577620a3b2e8cec7498c0d654b210d2cce1 Mon Sep 17 00:00:00 2001 From: Nathaniel Tucker Date: Sun, 1 Mar 2020 13:03:05 -0800 Subject: [PATCH] fix: useCache() with indexes but no entities ever stored (#279) --- .../selectors/__tests__/buildInferredResults.ts | 15 +++++++++++++++ .../src/state/selectors/buildInferredResults.ts | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/rest-hooks/src/state/selectors/__tests__/buildInferredResults.ts b/packages/rest-hooks/src/state/selectors/__tests__/buildInferredResults.ts index 94fefd3f31d..5443645c031 100644 --- a/packages/rest-hooks/src/state/selectors/__tests__/buildInferredResults.ts +++ b/packages/rest-hooks/src/state/selectors/__tests__/buildInferredResults.ts @@ -148,4 +148,19 @@ describe('buildInferredResults()', () => { data: undefined, }); }); + + it('should work with indexes but no indexes stored', () => { + const schema = { + pagination: { next: '', previous: '' }, + data: IndexedUserResource.asSchema(), + }; + expect(buildInferredResults(schema, { username: 'bob' }, {})).toEqual({ + pagination: { next: '', previous: '' }, + data: undefined, + }); + expect(buildInferredResults(schema, { hover: 'bob' }, {})).toEqual({ + pagination: { next: '', previous: '' }, + data: undefined, + }); + }); }); diff --git a/packages/rest-hooks/src/state/selectors/buildInferredResults.ts b/packages/rest-hooks/src/state/selectors/buildInferredResults.ts index 365d62ebcfd..f3c758fe3b4 100644 --- a/packages/rest-hooks/src/state/selectors/buildInferredResults.ts +++ b/packages/rest-hooks/src/state/selectors/buildInferredResults.ts @@ -24,7 +24,7 @@ export default function buildInferredResults< if (id !== undefined && id !== '') return id as any; // now attempt lookup in indexes const indexName = indexFromParams(params, schema.indexes); - if (indexName) { + if (indexName && indexes[schema.key]) { // 'as Record': indexName can only be found if params is a string key'd object return indexes[schema.key][indexName][ (params as Record)[indexName]