import { test, expect } from 'vitest'; /// --8<-- [start:sel1] import Updux from 'updux'; const dux = new Updux({ initialState: [], selectors: { getDone: (state) => state.filter(({ done }) => done), getById: (state) => (id) => state.find((todo) => todo.id === id), }, }); const state = [ { id: 1, done: true }, { id: 2, done: false }, ]; dux.selectors.getDone(state); // = [ { id: 1, done: true } ] dux.selectors.getById(state)(2); // = { id: 2, done: false } const store = dux.createStore({ preloadedState: state }); store.selectors.getDone(state); // = [ { id: 1, done: true } ] store.selectors.getById(state)(2); // = { id: 2, done: false } store.getState.getDone(); // = [ { id: 1, done: true } ] store.getState.getById(2); // = { id: 2, done: false } /// --8<-- [end:sel1] test('selectors', () => { expect(dux.selectors.getDone(state)).toMatchObject([{ id: 1, done: true }]); expect(dux.selectors.getById(state)(2)).toMatchObject({ id: 2 }); expect(store.selectors.getDone(state)).toMatchObject([ { id: 1, done: true }, ]); expect(store.selectors.getById(state)(2)).toMatchObject({ id: 2 }); expect(store.getState()).toMatchObject([{ id: 1 }, { id: 2 }]); expect(store.getState.getDone()).toMatchObject([{ id: 1, done: true }]); expect(store.getState.getById(2)).toMatchObject({ id: 2 }); });