"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = __importDefault(require("."));
const updeep_1 = __importDefault(require("updeep"));
const tracer = (chr) => updeep_1.default({ tracer: (s = '') => s + chr });
test('mutations, simple', () => {
    const dux = new _1.default({
        mutations: {
            foo: () => tracer('a'),
            '*': () => tracer('b'),
        },
    });
    const store = dux.createStore();
    expect(store.getState()).toEqual({ tracer: 'b' });
    store.dispatch.foo();
    expect(store.getState()).toEqual({ tracer: 'ba', });
    store.dispatch({ type: 'bar' });
    expect(store.getState()).toEqual({ tracer: 'bab', });
});
test('with subduxes', () => {
    const dux = new _1.default({
        mutations: {
            foo: () => tracer('a'),
            '*': () => tracer('b'),
            bar: () => ({ bar }) => ({ bar, tracer: bar.tracer })
        },
        subduxes: {
            bar: {
                mutations: {
                    foo: () => tracer('d'),
                    '*': () => tracer('e'),
                },
            },
        },
    });
    const store = dux.createStore();
    expect(store.getState()).toEqual({
        tracer: 'b',
        bar: { tracer: 'e' }
    });
    store.dispatch.foo();
    expect(store.getState()).toEqual({
        tracer: 'ba',
        bar: { tracer: 'ed' }
    });
    store.dispatch({ type: 'bar' });
    expect(store.getState()).toEqual({
        tracer: 'ede',
        bar: { tracer: 'ede' }
    });
});
//# sourceMappingURL=splat.test.js.map