57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
|
import { test, expect } from 'vitest';
|
||
|
/// [actions1]
|
||
|
import Updux, { createAction, withPayload } from 'updux';
|
||
|
const addTodo = createAction('addTodo', withPayload());
|
||
|
const todoDone = createAction('todoDone', withPayload());
|
||
|
const todosDux = new Updux({
|
||
|
initialState: {
|
||
|
nextId: 1,
|
||
|
todos: [],
|
||
|
},
|
||
|
actions: {
|
||
|
addTodo,
|
||
|
todoDone,
|
||
|
}
|
||
|
});
|
||
|
/// [actions1]
|
||
|
/// [actions2]
|
||
|
todosDux.actions.addTodo('write tutorial');
|
||
|
// { type: 'addTodo', payload: 'write tutorial' }
|
||
|
/// [actions2]
|
||
|
test("basic", () => {
|
||
|
expect(todosDux.actions.addTodo('write tutorial')).toEqual({
|
||
|
type: 'addTodo', payload: 'write tutorial'
|
||
|
});
|
||
|
});
|
||
|
/// [addMutation]
|
||
|
todosDux.addMutation(addTodo, (description) => (state) => {
|
||
|
state.todos.unshift({ description, id: state.nextId, done: false });
|
||
|
state.nextId++;
|
||
|
});
|
||
|
const store = todosDux.createStore();
|
||
|
store.dispatch.addTodo('write tutorial');
|
||
|
const state = store.getState();
|
||
|
// {
|
||
|
// nextId: 2,
|
||
|
// todos: [
|
||
|
// {
|
||
|
// description: 'write tutorial',
|
||
|
// done: false,
|
||
|
// id: 1,
|
||
|
// }
|
||
|
// ]
|
||
|
// }
|
||
|
/// [addMutation]
|
||
|
test("addMutation", () => {
|
||
|
expect(state).toEqual({
|
||
|
nextId: 2,
|
||
|
todos: [
|
||
|
{
|
||
|
description: 'write tutorial',
|
||
|
done: false,
|
||
|
id: 1,
|
||
|
}
|
||
|
]
|
||
|
});
|
||
|
});
|