Commit 95766fd6 authored by Paul Kaplan's avatar Paul Kaplan

Add clear to infinite list, fixup tests

parent cb7c60e8
......@@ -35,17 +35,16 @@
*/
const InfiniteList = key => {
const initialState = {
const getInitialState = () => ({
items: [],
offset: 0,
error: null,
loading: true,
moreToLoad: false
};
});
const reducer = (state, action) => {
if (typeof state === 'undefined') {
state = initialState;
state = getInitialState();
}
switch (action.type) {
......@@ -88,6 +87,8 @@ const InfiniteList = key => {
loading: false,
moreToLoad: false
};
case `${key}_CLEAR`:
return getInitialState();
default:
return state;
}
......@@ -100,6 +101,7 @@ const InfiniteList = key => {
error: error => ({type: `${key}_ERROR`, error}),
loading: () => ({type: `${key}_LOADING`}),
append: (items, moreToLoad) => ({type: `${key}_APPEND`, items, moreToLoad}),
clear: () => ({type: `${key}_CLEAR`}),
/**
* Load more action returns a thunk. It takes a function to call to get more items.
......
......@@ -104,6 +104,19 @@ describe('Infinite List redux module', () => {
});
});
describe('CLEAR', () => {
test('resets everything back to the initial state', () => {
const state = {
error: new Error(),
items: [1, 2, 3],
loading: 'something not initial',
moreToLoad: 'something not initial'
};
const newState = module.reducer(state, module.actions.clear());
expect(newState).toEqual(initialState);
});
});
describe('ERROR', () => {
let action;
let error = new Error();
......@@ -167,7 +180,7 @@ describe('Infinite List redux module', () => {
describe('selector', () => {
test('will return the slice of state defined by the key', () => {
const state = {
[module.key]: module.reducer(undefined, {}) // eslint-disable-line no-undefined
[module.key]: initialState
};
expect(module.selector(state)).toBe(initialState);
});
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment