Skip to content

Commit d6379b1

Browse files
committed
Add unit tests for when maxSize is set to a number that is less than 1
1 parent 51f3a04 commit d6379b1

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

test/lruMemoize.test.ts

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
// TODO: Add test for React Redux connect function
22

33
import { createSelectorCreator, lruMemoize } from 'reselect'
4-
import { vi } from 'vitest'
4+
import type { RootState } from './testUtils'
5+
import { localTest, toggleCompleted } from './testUtils'
56

67
const createSelector = createSelectorCreator({
78
memoize: lruMemoize,
@@ -414,4 +415,41 @@ describe(lruMemoize, () => {
414415
// @ts-expect-error
415416
expect(selector.resultFunc.clearCache).toBeUndefined()
416417
})
418+
419+
localTest(
420+
'maxSize should default to 1 when set to a number that is less than 1',
421+
({ state, store }) => {
422+
const createSelectorLru = createSelectorCreator({
423+
memoize: lruMemoize,
424+
argsMemoize: lruMemoize,
425+
memoizeOptions: { maxSize: 0 },
426+
argsMemoizeOptions: { maxSize: 0 }
427+
}).withTypes<RootState>()
428+
429+
const selectTodoIds = createSelectorLru([state => state.todos], todos =>
430+
todos.map(({ id }) => id)
431+
)
432+
433+
expect(selectTodoIds(store.getState())).toBe(
434+
selectTodoIds(store.getState())
435+
)
436+
437+
expect(selectTodoIds.recomputations()).toBe(1)
438+
439+
store.dispatch(toggleCompleted(0))
440+
441+
expect(selectTodoIds(store.getState())).toBe(
442+
selectTodoIds(store.getState())
443+
)
444+
445+
expect(selectTodoIds.recomputations()).toBe(2)
446+
447+
const selectTodoIdsLru = lruMemoize(
448+
(state: RootState) => state.todos.map(({ id }) => id),
449+
{ maxSize: -2 }
450+
)
451+
452+
expect(selectTodoIdsLru(state)).toBe(selectTodoIdsLru(state))
453+
}
454+
)
417455
})

0 commit comments

Comments
 (0)