Skip to content

Commit d16c0d5

Browse files
committed
fix(use-dataloader): fix case where cache array key with false value was ignored
1 parent c763200 commit d16c0d5

File tree

4 files changed

+17
-14
lines changed

4 files changed

+17
-14
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@scaleway/use-dataloader': patch
3+
---
4+
5+
Fix case where cache array key with false value was ignored.

packages/use-dataloader/src/__tests__/helpers.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ describe('marshalQueryKey', () => {
1313
test('should accept primitive array', () => {
1414
const date = new Date('2021')
1515
expect(marshalQueryKey(['defaultKey', 3, null, date, true])).toStrictEqual(
16-
'defaultKey.3.2021-01-01T00:00:00.000Z.true',
16+
'defaultKey.3..Fri Jan 01 2021 01:00:00 GMT+0100 (Central European Standard Time).true',
1717
)
1818

1919
expect(
@@ -27,7 +27,7 @@ describe('marshalQueryKey', () => {
2727
].flat(),
2828
),
2929
).toStrictEqual(
30-
'default key.number.3.null.date.2021-01-01T00:00:00.000Z.boolean.true',
30+
'default key.number.3.null..date.Fri Jan 01 2021 01:00:00 GMT+0100 (Central European Standard Time).boolean.true',
3131
)
3232
})
3333

packages/use-dataloader/src/__tests__/useDataLoader.test.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -675,18 +675,22 @@ describe('useDataLoader', () => {
675675

676676
test('should use cached data', async () => {
677677
const fakePromise = jest.fn(initialProps.method)
678+
const testDate = new Date()
678679
const { result } = renderHook(
679680
props => [
680681
useDataLoader(props.key, props.method, props.config),
681682
useDataLoader(props.key, props.method, {
682683
...props.config,
683684
enabled: false,
684685
}),
686+
// eslint-disable-next-line no-sparse-arrays
687+
useDataLoader(['test-13', , testDate], props.method, props.config),
685688
],
686689
{
687690
initialProps: {
688691
...initialProps,
689-
key: 'test-13',
692+
// eslint-disable-next-line no-sparse-arrays
693+
key: ['test-13', false, testDate],
690694
method: fakePromise,
691695
},
692696
wrapper,
@@ -710,7 +714,10 @@ describe('useDataLoader', () => {
710714

711715
await waitFor(() => expect(result.current[1]?.isSuccess).toBe(true))
712716
expect(result.current[1]?.isSuccess).toBe(true)
713-
expect(fakePromise).toBeCalledTimes(2)
717+
718+
await waitFor(() => expect(result.current[2]?.isSuccess).toBe(true))
719+
expect(result.current[2]?.data).toBe(true)
720+
expect(fakePromise).toBeCalledTimes(3)
714721
})
715722

716723
test('should be reloaded from dataloader context', async () => {

packages/use-dataloader/src/helpers.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,5 @@ import type { KeyType } from './types'
77
*/
88
export const marshalQueryKey = (queryKey: KeyType) =>
99
Array.isArray(queryKey)
10-
? queryKey
11-
.filter(Boolean)
12-
.map(subKey => {
13-
if (subKey instanceof Date) {
14-
return subKey.toISOString()
15-
}
16-
17-
return subKey?.toString()
18-
})
19-
.join('.')
10+
? queryKey.filter(value => value !== undefined).join('.')
2011
: queryKey.toString()

0 commit comments

Comments
 (0)