From 7a14de0dd614aeefff760c9405c1732e328c853a Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Mon, 12 Jun 2023 14:21:35 -0700 Subject: [PATCH] Extract type for RequiredFieldLoggerEvent Reviewed By: josephsavona Differential Revision: D46612685 fbshipit-source-id: 583aeef521e6d34f947d930458a667c7691100fe --- .../__tests__/LiveResolvers-test.js | 13 ++------- .../FragmentResource-Resolver-test.js | 16 ++-------- .../FragmentResourceRequiredField-test.js | 19 ++++-------- .../query/__tests__/fetchQuery-test.js | 29 ++----------------- .../relay-runtime/store/RelayStoreTypes.js | 14 ++++----- 5 files changed, 20 insertions(+), 71 deletions(-) diff --git a/packages/react-relay/__tests__/LiveResolvers-test.js b/packages/react-relay/__tests__/LiveResolvers-test.js index 50d8337044694..4184bce3e4b4d 100644 --- a/packages/react-relay/__tests__/LiveResolvers-test.js +++ b/packages/react-relay/__tests__/LiveResolvers-test.js @@ -12,6 +12,7 @@ 'use strict'; import type {IEnvironment} from 'relay-runtime'; +import type {RequiredFieldLoggerEvent} from 'relay-runtime/store/RelayStoreTypes'; import type {MutableRecordSource} from 'relay-runtime/store/RelayStoreTypes'; const React = require('react'); @@ -926,17 +927,7 @@ describe.each([ ); } const requiredFieldLogger = jest.fn< - | $FlowFixMe - | [ - | {+fieldPath: string, +kind: 'missing_field.log', +owner: string} - | {+fieldPath: string, +kind: 'missing_field.throw', +owner: string} - | { - +error: Error, - +fieldPath: string, - +kind: 'relay_resolver.error', - +owner: string, - }, - ], + $FlowFixMe | [RequiredFieldLoggerEvent], void, >(); function createEnvironment(source: MutableRecordSource) { diff --git a/packages/react-relay/relay-hooks/__tests__/FragmentResource-Resolver-test.js b/packages/react-relay/relay-hooks/__tests__/FragmentResource-Resolver-test.js index 18e3db88faf1f..bb5b271a3130d 100644 --- a/packages/react-relay/relay-hooks/__tests__/FragmentResource-Resolver-test.js +++ b/packages/react-relay/relay-hooks/__tests__/FragmentResource-Resolver-test.js @@ -11,6 +11,8 @@ 'use strict'; +import type {RequiredFieldLoggerEvent} from 'relay-runtime/store/RelayStoreTypes'; + const { getFragmentResourceForEnvironment, } = require('react-relay/relay-hooks/FragmentResource'); @@ -61,19 +63,7 @@ describe('FragmentResource RelayResolver behavior', () => { let mockRequiredFieldLogger; beforeEach(() => { - mockRequiredFieldLogger = jest.fn< - [ - | {+fieldPath: string, +kind: 'missing_field.log', +owner: string} - | {+fieldPath: string, +kind: 'missing_field.throw', +owner: string} - | { - +error: Error, - +fieldPath: string, - +kind: 'relay_resolver.error', - +owner: string, - }, - ], - void, - >(); + mockRequiredFieldLogger = jest.fn<[RequiredFieldLoggerEvent], void>(); environment = createMockEnvironment({ requiredFieldLogger: mockRequiredFieldLogger, }); diff --git a/packages/react-relay/relay-hooks/__tests__/FragmentResourceRequiredField-test.js b/packages/react-relay/relay-hooks/__tests__/FragmentResourceRequiredField-test.js index b6b16d87076a9..76213bb063508 100644 --- a/packages/react-relay/relay-hooks/__tests__/FragmentResourceRequiredField-test.js +++ b/packages/react-relay/relay-hooks/__tests__/FragmentResourceRequiredField-test.js @@ -10,7 +10,10 @@ */ 'use strict'; -import type {LogEvent} from '../../../relay-runtime/store/RelayStoreTypes'; +import type { + LogEvent, + RequiredFieldLoggerEvent, +} from 'relay-runtime/store/RelayStoreTypes'; const {getFragmentResourceForEnvironment} = require('../FragmentResource'); const { @@ -37,19 +40,7 @@ let requiredFieldLogger; beforeEach(() => { logger = jest.fn<[LogEvent], void>(); - requiredFieldLogger = jest.fn< - [ - | {+fieldPath: string, +kind: 'missing_field.log', +owner: string} - | {+fieldPath: string, +kind: 'missing_field.throw', +owner: string} - | { - +error: Error, - +fieldPath: string, - +kind: 'relay_resolver.error', - +owner: string, - }, - ], - void, - >(); + requiredFieldLogger = jest.fn<[RequiredFieldLoggerEvent], void>(); environment = createMockEnvironment({ log: logger, diff --git a/packages/relay-runtime/query/__tests__/fetchQuery-test.js b/packages/relay-runtime/query/__tests__/fetchQuery-test.js index 4b9bd2b5a273e..25a1cec3baaa5 100644 --- a/packages/relay-runtime/query/__tests__/fetchQuery-test.js +++ b/packages/relay-runtime/query/__tests__/fetchQuery-test.js @@ -11,6 +11,7 @@ 'use strict'; +import type {RequiredFieldLoggerEvent} from '../../store/RelayStoreTypes'; import type {fetchQueryTest1Query$data} from './__generated__/fetchQueryTest1Query.graphql'; import type {RequestParameters} from 'relay-runtime'; @@ -239,19 +240,7 @@ describe('fetchQuery', () => { describe('fetchQuery with missing @required value', () => { it('provides data snapshot on next', () => { - const requiredFieldLogger = jest.fn< - [ - | {+fieldPath: string, +kind: 'missing_field.log', +owner: string} - | {+fieldPath: string, +kind: 'missing_field.throw', +owner: string} - | { - +error: Error, - +fieldPath: string, - +kind: 'relay_resolver.error', - +owner: string, - }, - ], - void, - >(); + const requiredFieldLogger = jest.fn<[RequiredFieldLoggerEvent], void>(); const environment = createMockEnvironment({ requiredFieldLogger, }); @@ -286,19 +275,7 @@ describe('fetchQuery with missing @required value', () => { }); it('throws on resolution', () => { - const requiredFieldLogger = jest.fn< - [ - | {+fieldPath: string, +kind: 'missing_field.log', +owner: string} - | {+fieldPath: string, +kind: 'missing_field.throw', +owner: string} - | { - +error: Error, - +fieldPath: string, - +kind: 'relay_resolver.error', - +owner: string, - }, - ], - void, - >(); + const requiredFieldLogger = jest.fn<[RequiredFieldLoggerEvent], void>(); const environment = createMockEnvironment({requiredFieldLogger}); const query = graphql` query fetchQueryTest3Query { diff --git a/packages/relay-runtime/store/RelayStoreTypes.js b/packages/relay-runtime/store/RelayStoreTypes.js index 3704fa5321933..56194d9691089 100644 --- a/packages/relay-runtime/store/RelayStoreTypes.js +++ b/packages/relay-runtime/store/RelayStoreTypes.js @@ -1167,11 +1167,7 @@ export type MissingFieldHandler = ) => ?Array, }; -/** - * A handler for events related to @required fields. Currently reports missing - * fields with either `action: LOG` or `action: THROW`. - */ -export type RequiredFieldLogger = ( +export type RequiredFieldLoggerEvent = | { +kind: 'missing_field.log', +owner: string, @@ -1187,8 +1183,12 @@ export type RequiredFieldLogger = ( +owner: string, +fieldPath: string, +error: Error, - }, -) => void; + }; +/** + * A handler for events related to @required fields. Currently reports missing + * fields with either `action: LOG` or `action: THROW`. + */ +export type RequiredFieldLogger = (event: RequiredFieldLoggerEvent) => void; /** * The results of normalizing a query.