@benev/slate
Version:
frontend web stuff
41 lines • 1.5 kB
JavaScript
import { expect } from "cynic";
import { ZipAction } from "./action.js";
import { StateTree } from "../state_tree.js";
export default {
"actions work": async () => {
let memory = 0;
const blueprint = ZipAction.blueprint();
const testActions = ZipAction.prepBlueprint((state) => state.test);
const tree = new StateTree({ test: { count: 0 } }, () => { memory = tree.state.test.count; });
const subgroup = testActions(action => ({
double: action(test => () => {
test.count *= 2;
}),
}));
const counting_specs = blueprint({
...subgroup,
wrapper: {
add: state => (n) => {
state.test.count += n;
},
reset: (_state, setRoot) => () => {
setRoot({ test: { count: 0 } });
},
},
});
const counting = ZipAction.actualize(tree, counting_specs);
expect(tree.state.test.count).equals(0);
expect(memory).equals(0);
counting.wrapper.add(1);
counting.wrapper.add(2);
expect(tree.state.test.count).equals(3);
expect(memory).equals(3);
counting.double();
expect(tree.state.test.count).equals(6);
expect(memory).equals(6);
counting.wrapper.reset();
expect(tree.state.test.count).equals(0);
expect(memory).equals(0);
},
};
//# sourceMappingURL=action.test.js.map