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++; }); });