From 0d4b75292dcbebb6062903c40c66b32e82c326db Mon Sep 17 00:00:00 2001 From: OYED Date: Thu, 24 Mar 2022 17:48:44 +0800 Subject: [PATCH] fix(core): ensure state is passed to middleware --- packages/core/src/instance/index.ts | 2 +- packages/core/test/lamware.test.ts | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/core/src/instance/index.ts b/packages/core/src/instance/index.ts index d10b125..f0046d1 100644 --- a/packages/core/src/instance/index.ts +++ b/packages/core/src/instance/index.ts @@ -45,7 +45,7 @@ export const lamware = (options?: Options) => { const basePayload: MiddlewarePayload = { debug, logger: localLogger, - state: {}, + state: compileState(), }; let payload: BeforeMiddlewarePayload = { diff --git a/packages/core/test/lamware.test.ts b/packages/core/test/lamware.test.ts index 119fd32..92f1830 100644 --- a/packages/core/test/lamware.test.ts +++ b/packages/core/test/lamware.test.ts @@ -232,6 +232,29 @@ test('should allow middleware to initialize with global state', async () => { expect(result.body).toBe(JSON.stringify({ hello: true, hello2: false })); }); +test('should allow middleware to access state set by init', async () => { + const { handler } = lamware>() + .use, { testing123: boolean; testing1234: boolean }>>({ + id: 'test-1', + pure: true, + init: async () => ({ testing123: true }), + before: async (payload) => { + payload.state.testing1234 = payload.state.testing123; + return payload; + }, + }) + .execute(async ({ state }) => { + return { + statusCode: 200, + body: JSON.stringify({ hello: state.testing1234 }), + }; + }); + const result = await execute(handler); + + expect(result.statusCode).toBe(200); + expect(result.body).toBe(JSON.stringify({ hello: true })); +}); + test('should allow middleware to modify a global state', async () => { const { handler } = lamware>() .use, { testing123: boolean }>>({