Skip to content

Commit

Permalink
Extract type for RequiredFieldLoggerEvent
Browse files Browse the repository at this point in the history
Reviewed By: josephsavona

Differential Revision: D46612685

fbshipit-source-id: 583aeef521e6d34f947d930458a667c7691100fe
  • Loading branch information
captbaritone authored and facebook-github-bot committed Jun 12, 2023
1 parent 5dfb88b commit 7a14de0
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 71 deletions.
13 changes: 2 additions & 11 deletions packages/react-relay/__tests__/LiveResolvers-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

'use strict';

import type {RequiredFieldLoggerEvent} from 'relay-runtime/store/RelayStoreTypes';

const {
getFragmentResourceForEnvironment,
} = require('react-relay/relay-hooks/FragmentResource');
Expand Down Expand Up @@ -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,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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,
Expand Down
29 changes: 3 additions & 26 deletions packages/relay-runtime/query/__tests__/fetchQuery-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down Expand Up @@ -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,
});
Expand Down Expand Up @@ -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 {
Expand Down
14 changes: 7 additions & 7 deletions packages/relay-runtime/store/RelayStoreTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -1167,11 +1167,7 @@ export type MissingFieldHandler =
) => ?Array<?DataID>,
};

/**
* 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,
Expand All @@ -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.
Expand Down

0 comments on commit 7a14de0

Please sign in to comment.