updux/dist/tutorial.test.js

40 lines
1.2 KiB
JavaScript
Raw Normal View History

2025-01-31 18:16:41 +00:00
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++;
});
});