cra-template-bod
Version:
The advanced TypeScript template for Bod CLI.
77 lines (55 loc) • 1.74 kB
text/typescript
import { makeStore } from '../../../store'
import type { CounterState } from '../slice'
import {
counterSlice,
decrement,
increment,
incrementAsync,
incrementByAmount,
incrementIfOdd,
selectCount,
} from '../slice'
describe('counter reducer', () => {
const initialState: CounterState = {
value: 3,
status: 'idle',
}
let store = makeStore()
beforeEach(() => {
store = makeStore({ counter: initialState })
})
it('should handle initial state', () => {
// eslint-disable-next-line no-undefined -- Disable for testing.
expect(counterSlice.reducer(undefined, { type: 'unknown' })).toStrictEqual({
value: 0,
status: 'idle',
})
})
it('should handle increment', () => {
expect(selectCount(store.getState())).toBe(3)
store.dispatch(increment())
expect(selectCount(store.getState())).toBe(4)
})
it('should handle decrement', () => {
expect(selectCount(store.getState())).toBe(3)
store.dispatch(decrement())
expect(selectCount(store.getState())).toBe(2)
})
it('should handle incrementByAmount', () => {
expect(selectCount(store.getState())).toBe(3)
store.dispatch(incrementByAmount(2))
expect(selectCount(store.getState())).toBe(5)
})
it('should handle incrementAsync', async () => {
expect(selectCount(store.getState())).toBe(3)
await store.dispatch(incrementAsync(2))
expect(selectCount(store.getState())).toBe(5)
})
it('should handle incrementIfOdd', () => {
expect(selectCount(store.getState())).toBe(3)
store.dispatch(incrementIfOdd(2))
expect(selectCount(store.getState())).toBe(5)
store.dispatch(incrementIfOdd(3))
expect(selectCount(store.getState())).toBe(8)
})
})