Skip to content

Commit e7fce61

Browse files
committed
Add tests for 'skipPollOnFocusLost' option
New test cases have been added for the 'skipPollOnFocusLost' option in query polling. Specifically, these tests verify the correct behaviour when this option is toggled, when it's reset on mount, and when it's changed via subscription options update.
1 parent d1b9971 commit e7fce61

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

packages/toolkit/src/query/tests/polling.test.tsx

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,85 @@ describe('polling tests', () => {
122122

123123
expect(mockBaseQuery.mock.calls.length).toBeGreaterThanOrEqual(2)
124124
})
125+
126+
it('respects skipPollOnFocusLost', async () => {
127+
storeRef.store.dispatch(
128+
getPosts.initiate(1, {
129+
subscriptionOptions: { pollingInterval: 10, skipPollOnFocusLost: true },
130+
subscribe: true,
131+
})
132+
)
133+
134+
await delay(20)
135+
const callsWithSkip = mockBaseQuery.mock.calls.length
136+
137+
storeRef.store.dispatch(
138+
getPosts.initiate(1, {
139+
subscriptionOptions: {
140+
pollingInterval: 10,
141+
skipPollOnFocusLost: false,
142+
},
143+
subscribe: true,
144+
})
145+
)
146+
147+
await delay(30)
148+
const callsWithoutSkip = mockBaseQuery.mock.calls.length
149+
150+
expect(callsWithSkip).toBe(1)
151+
expect(callsWithoutSkip).toBeGreaterThan(2)
152+
})
153+
154+
it('replaces skipPollOnFocusLost with most recent mount', async () => {
155+
storeRef.store.dispatch(
156+
getPosts.initiate(1, {
157+
subscriptionOptions: {
158+
pollingInterval: 10,
159+
skipPollOnFocusLost: false,
160+
},
161+
subscribe: true,
162+
})
163+
)
164+
165+
await delay(50)
166+
const callsWithSkip = mockBaseQuery.mock.calls.length
167+
168+
storeRef.store.dispatch(
169+
getPosts.initiate(1, {
170+
subscriptionOptions: { pollingInterval: 15, skipPollOnFocusLost: true },
171+
subscribe: true,
172+
})
173+
)
174+
175+
await delay(50)
176+
const callsWithoutSkip = mockBaseQuery.mock.calls.length
177+
178+
expect(callsWithSkip).toBeGreaterThan(2)
179+
expect(callsWithoutSkip).toBe(callsWithSkip + 1)
180+
})
181+
182+
it('replaces skipPollOnFocusLost when the subscription options are updated', async () => {
183+
const { requestId, queryCacheKey, ...subscription } =
184+
storeRef.store.dispatch(
185+
getPosts.initiate(1, {
186+
subscriptionOptions: { pollingInterval: 10 },
187+
subscribe: true,
188+
})
189+
)
190+
191+
const getSubs = createSubscriptionGetter(queryCacheKey)
192+
193+
await delay(1)
194+
expect(Object.keys(getSubs())).toHaveLength(1)
195+
expect(getSubs()[requestId].skipPollOnFocusLost).toBe(false)
196+
197+
subscription.updateSubscriptionOptions({
198+
pollingInterval: 20,
199+
skipPollOnFocusLost: true,
200+
})
201+
202+
await delay(1)
203+
expect(Object.keys(getSubs())).toHaveLength(1)
204+
expect(getSubs()[requestId].skipPollOnFocusLost).toBe(true)
205+
})
125206
})

0 commit comments

Comments
 (0)