Skip to content

Commit 651cc27

Browse files
captbaritonefacebook-github-bot
authored andcommitted
Avoid making assertions about unrelated warning calls (#4933)
Summary: Pull Request resolved: #4933 Reviewed By: itamark, tyao1 Differential Revision: D70639378 Pulled By: captbaritone fbshipit-source-id: 489cb4fa37667a9d709c66bcda20e716a401948f
1 parent 182d6d5 commit 651cc27

File tree

2 files changed

+37
-35
lines changed

2 files changed

+37
-35
lines changed

packages/react-relay/relay-hooks/__tests__/usePreloadedQuery-test.js

+33-32
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,16 @@ const {createMockEnvironment} = require('relay-test-utils');
3535
const {
3636
injectPromisePolyfill__DEPRECATED,
3737
} = require('relay-test-utils-internal');
38-
const warning = require('warning');
38+
const {
39+
disallowConsoleErrors,
40+
disallowWarnings,
41+
expectToWarn,
42+
} = require('relay-test-utils-internal');
3943

40-
injectPromisePolyfill__DEPRECATED();
44+
disallowWarnings();
45+
disallowConsoleErrors();
4146

42-
jest.mock('warning');
47+
injectPromisePolyfill__DEPRECATED();
4348

4449
const query = graphql`
4550
query usePreloadedQueryTestQuery($id: ID!) {
@@ -110,11 +115,6 @@ class ErrorBoundary extends React.Component<$FlowFixMe, $FlowFixMe> {
110115
}
111116
}
112117

113-
beforeEach(() => {
114-
// $FlowFixMe[prop-missing]
115-
warning.mockClear();
116-
});
117-
118118
afterAll(() => {
119119
jest.clearAllMocks();
120120
});
@@ -1041,15 +1041,20 @@ describe('usePreloadedQuery', () => {
10411041
return data.node?.name;
10421042
}
10431043
let renderer;
1044-
TestRenderer.act(() => {
1045-
renderer = TestRenderer.create(
1046-
<RelayEnvironmentProvider environment={altEnvironment}>
1047-
<React.Suspense fallback="Fallback">
1048-
<Component prefetched={prefetched} />
1049-
</React.Suspense>
1050-
</RelayEnvironmentProvider>,
1051-
);
1052-
});
1044+
expectToWarn(
1045+
'usePreloadedQuery(): usePreloadedQuery was passed a preloaded query that was created with a different environment than the one that is currently in context. In the future, this will become a hard error.',
1046+
() => {
1047+
TestRenderer.act(() => {
1048+
renderer = TestRenderer.create(
1049+
<RelayEnvironmentProvider environment={altEnvironment}>
1050+
<React.Suspense fallback="Fallback">
1051+
<Component prefetched={prefetched} />
1052+
</React.Suspense>
1053+
</RelayEnvironmentProvider>,
1054+
);
1055+
});
1056+
},
1057+
);
10531058

10541059
expect(renderer?.toJSON()).toEqual('Fallback');
10551060
expect(altFetch).toHaveBeenCalledTimes(1);
@@ -1058,16 +1063,20 @@ describe('usePreloadedQuery', () => {
10581063
altDataSource.next(response);
10591064
}
10601065

1061-
TestRenderer.act(() => jest.runAllImmediates());
1066+
expectToWarn(
1067+
'usePreloadedQuery(): usePreloadedQuery was passed a preloaded query that was created with a different environment than the one that is currently in context. In the future, this will become a hard error.',
1068+
() => {
1069+
TestRenderer.act(() => jest.runAllImmediates());
1070+
},
1071+
);
10621072
expect(renderer?.toJSON()).toEqual('Zuck');
10631073
});
10641074
});
10651075

10661076
describe('when loadQuery is passed a preloadedQuery that was disposed', () => {
10671077
it('warns that the preloadedQuery has already been disposed', () => {
1068-
const expectWarningMessage = expect.stringMatching(
1069-
/^usePreloadedQuery\(\): Expected preloadedQuery to not be disposed/,
1070-
);
1078+
const expectWarningMessage =
1079+
'usePreloadedQuery(): Expected preloadedQuery to not be disposed yet. This is because disposing the query marks it for future garbage collection, and as such query results may no longer be present in the Relay store. In the future, this will become a hard error.';
10711080
const prefetched = loadQuery(environment, preloadableConcreteRequest, {
10721081
id: '1',
10731082
});
@@ -1091,19 +1100,11 @@ describe('usePreloadedQuery', () => {
10911100
};
10921101

10931102
render();
1094-
expect(warning).toBeCalledTimes(1);
1095-
expect(warning).toHaveBeenLastCalledWith(
1096-
true, // invariant holds
1097-
expectWarningMessage,
1098-
);
10991103

11001104
prefetched.dispose();
1101-
render();
1102-
expect(warning).toBeCalledTimes(2);
1103-
expect(warning).toHaveBeenLastCalledWith(
1104-
false, // invariant broken
1105-
expectWarningMessage,
1106-
);
1105+
expectToWarn(expectWarningMessage, () => {
1106+
render();
1107+
});
11071108
});
11081109
});
11091110

packages/react-relay/relay-hooks/__tests__/useRefetchableFragmentNode-test.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -646,10 +646,11 @@ describe.each([['New', useRefetchableFragmentInternal]])(
646646
refetch({id: '4'});
647647
});
648648

649-
expect(warning).toHaveBeenCalledTimes(1);
649+
// $FlowFixMe[prop-missing]
650+
const triggeredWarnings = warning.mock.calls.filter(args => !args[0]);
651+
expect(triggeredWarnings.length).toBe(1);
650652
expect(
651-
// $FlowFixMe[prop-missing]
652-
warning.mock.calls[0][1].includes(
653+
triggeredWarnings[0][1].includes(
653654
'Relay: Unexpected call to `refetch` while using a null fragment ref',
654655
),
655656
).toEqual(true);

0 commit comments

Comments
 (0)