Skip to content

Commit bc36411

Browse files
committed
wip
1 parent 7d3fccc commit bc36411

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

packages/react-query/src/__tests__/useQuery.promise.test.tsx

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import {
1212
useQuery,
1313
} from '..'
1414
import { QueryCache } from '../index'
15-
import { createQueryClient, queryKey, sleep } from './utils'
15+
import { createDeferred, createQueryClient, queryKey, sleep } from './utils'
16+
17+
1618

1719
describe('useQuery().promise', () => {
1820
const queryCache = new QueryCache()
@@ -75,11 +77,11 @@ describe('useQuery().promise', () => {
7577
withinDOM().getByText('loading..')
7678
expect(renderedComponents).toEqual([Page, Loading])
7779
}
78-
80+
7981
{
8082
const { renderedComponents, withinDOM } = await renderStream.takeRender()
8183
withinDOM().getByText('test')
82-
expect(renderedComponents).toEqual([Page, MyComponent])
84+
expect(renderedComponents).toEqual([MyComponent])
8385
}
8486
})
8587

@@ -1035,10 +1037,11 @@ describe('useQuery().promise', () => {
10351037
expect(queryFn).toHaveBeenCalledTimes(0)
10361038
})
10371039

1038-
it('should show correct data when switching between cache entries without re-fetches', async () => {
1040+
it.only('should show correct data when switching between cache entries without re-fetches', async () => {
10391041
const key = queryKey()
10401042
const renderStream = createRenderStream({ snapshotDOM: true })
10411043

1044+
10421045
function MyComponent(props: { promise: Promise<string> }) {
10431046
useTrackRenders()
10441047
const data = React.use(props.promise)
@@ -1091,7 +1094,15 @@ describe('useQuery().promise', () => {
10911094
expect(renderedComponents).toEqual([MyComponent])
10921095
}
10931096

1094-
rendered.getByText('inc').click()
1097+
{
1098+
rendered.getByText('inc').click()
1099+
1100+
const { renderedComponents, withinDOM } = await renderStream.takeRender()
1101+
withinDOM().getByText('test0')
1102+
console.log({renderedComponents})
1103+
expect(renderedComponents).toEqual([Page, MyComponent])
1104+
1105+
}
10951106

10961107
{
10971108
const { renderedComponents, withinDOM } = await renderStream.takeRender()

packages/react-query/src/__tests__/utils.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,16 @@ export function setIsServer(isServer: boolean) {
9494
}
9595

9696
export const doNotExecute = (_func: () => void) => true
97+
98+
99+
export function createDeferred<TValue>() {
100+
let resolve: (value: TValue) => void;
101+
let reject: (error: unknown) => void;
102+
const promise = new Promise<TValue>((res, rej) => {
103+
resolve = res;
104+
reject = rej;
105+
});
106+
107+
return { promise, resolve: resolve!, reject: reject! };
108+
}
109+
export type Deferred<TValue> = ReturnType<typeof createDeferred<TValue>>;

0 commit comments

Comments
 (0)