overmind
Version:
Frictionless state management
1 lines • 6.71 kB
Source Map (JSON)
{"version":3,"file":"mock.test.js","sourceRoot":"","sources":["../src/mock.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { IContext, createOvermindMock } from './'\n\ndescribe('Mock', () => {\n test('should run action tests', () => {\n type State = {\n foo: string\n }\n const state: State = {\n foo: 'bar',\n }\n const test = ({ state, effects }: Context) => {\n state.foo = effects.effect('bar2')\n }\n const actions = { test }\n const effect = (arg: string) => arg\n const effects = { effect }\n const config = {\n state,\n actions,\n effects,\n }\n\n type Context = IContext<{\n state: typeof state\n actions: typeof actions\n effects: typeof effects\n }>\n\n const overmind = createOvermindMock(config, {\n effect(arg) {\n return arg + '!!!'\n },\n })\n\n overmind.actions.test()\n\n expect(overmind.mutations).toEqual([\n {\n method: 'set',\n path: 'foo',\n args: ['bar2!!!'],\n hasChangedValue: true,\n delimiter: '.',\n },\n ])\n })\n test('should test onInitialize explicitly', () => {\n type State = {\n foo: string\n }\n const state: State = {\n foo: 'bar',\n }\n const onInitializeOvermind = ({ state }: Context) => {\n state.foo += '!'\n }\n\n const actions = {\n onInitializeOvermind,\n }\n\n const config = {\n actions,\n state,\n }\n\n type Context = IContext<{\n state: typeof state\n actions: typeof actions\n }>\n\n const overmind = createOvermindMock(config, {\n effect() {\n return 'bar3'\n },\n })\n\n overmind.onInitialize()\n\n expect(overmind.mutations).toEqual([\n {\n method: 'set',\n path: 'foo',\n args: ['bar!'],\n hasChangedValue: true,\n delimiter: '.',\n },\n ])\n })\n test('should preserve getters', async (done) => {\n expect.assertions(1)\n const state = {\n value: 0,\n get valuePlusTwo() {\n return this.value + 2\n },\n }\n const updateValue = (context: Context) => {\n context.state.value = 15\n }\n const actions = { updateValue }\n const config = { state, actions }\n\n type Context = IContext<{\n state: typeof state\n actions: typeof actions\n }>\n\n const mock = createOvermindMock(config)\n await mock.actions.updateValue()\n expect(mock.state.valuePlusTwo).toEqual(17)\n done()\n })\n test('should allow setting initial state', async () => {\n expect.assertions(1)\n const state = {\n value: 0,\n }\n const config = { state }\n\n const mock = createOvermindMock(config, (state) => {\n state.value = 1\n })\n expect(mock.state.value).toBe(1)\n })\n test('should allow setting initial and mock effect', async () => {\n expect.assertions(2)\n const state = {\n value: 0,\n }\n const config = {\n state,\n actions: {\n runFoo({ effects }) {\n return effects.foo()\n },\n },\n effects: {\n foo() {\n return 'bar'\n },\n },\n }\n\n const mock = createOvermindMock(\n config,\n {\n foo() {\n return 'bar2'\n },\n },\n (state) => {\n state.value = 1\n }\n )\n expect(mock.state.value).toBe(1)\n expect(mock.actions.runFoo()).toBe('bar2')\n })\n})\n"]}