40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
import Updux, { createAction, withPayload } from './index.js';
|
|
import { expectTypeOf } from 'expect-type';
|
|
test('initialState state', () => {
|
|
const initialState = {
|
|
next_id: 1,
|
|
todos: [],
|
|
};
|
|
const dux = new Updux({
|
|
initialState,
|
|
});
|
|
expectTypeOf(dux.initialState).toMatchTypeOf();
|
|
expect(dux.initialState).toEqual(initialState);
|
|
const store = dux.createStore();
|
|
expect(store.getState()).toEqual(initialState);
|
|
});
|
|
test('actions', () => {
|
|
const addTodo = createAction('addTodo', withPayload());
|
|
const todoDone = createAction('todoDone');
|
|
const todosDux = new Updux({
|
|
actions: {
|
|
addTodo,
|
|
todoDone,
|
|
},
|
|
});
|
|
expect(todosDux.actions.addTodo('write tutorial')).toEqual({
|
|
type: 'addTodo',
|
|
payload: 'write tutorial',
|
|
});
|
|
});
|
|
test('mutation', () => {
|
|
const addTodo = createAction('addTodo', withPayload());
|
|
const dux = new Updux({
|
|
initialState: { nextId: 0, todos: [] },
|
|
});
|
|
dux.addMutation(addTodo, (description) => (state) => {
|
|
state.todos.unshift({ description, id: state.nextId, done: false });
|
|
state.nextId++;
|
|
});
|
|
});
|