From d46081f278ccd0f5734925f0bc070d743f182db4 Mon Sep 17 00:00:00 2001 From: chenshenhai Date: Fri, 8 Oct 2021 22:16:38 +0800 Subject: [PATCH] test: add util/__tests__/lib/time.test.ts --- packages/util/__tests__/lib/time.test.ts | 68 ++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 packages/util/__tests__/lib/time.test.ts diff --git a/packages/util/__tests__/lib/time.test.ts b/packages/util/__tests__/lib/time.test.ts new file mode 100644 index 0000000..d4aa1c5 --- /dev/null +++ b/packages/util/__tests__/lib/time.test.ts @@ -0,0 +1,68 @@ +import { + delay, throttle, compose, +} from '../../src/lib/time'; + + +describe('@idraw/util: lib/delay', () => { + + test('delay', async () => { + const start = Date.now(); + const time = 1000; + await delay(time); + const count = Date.now() - start; + expect(count >= time).toStrictEqual(true); + }); + + test('throttle', async () => { + let count = 0; + function doThrottle() { + return new Promise((resolve) => { + const func = throttle(function() { + count ++; + }, 100); + let interval = setInterval(() => { + if (count >= 5) { + clearInterval(interval); + resolve(null) + } + func(); + }, 5); + }) + } + await doThrottle(); + expect(count).toStrictEqual(5); + }); + + + test('compose', async () => { + let middleware = []; + let context = { + data: [] + }; + + middleware.push(async(ctx: any, next: any) => { + ctx.data.push(1); + await next(); + ctx.data.push(6); + }); + + middleware.push(async(ctx: any, next: any) => { + ctx.data.push(2); + await next(); + ctx.data.push(5); + }); + + middleware.push(async(ctx: any, next: any) => { + ctx.data.push(3); + await next(); + ctx.data.push(4); + }); + + const fn = compose(middleware); + + await fn(context); + expect(context).toStrictEqual({data: [1, 2, 3, 4, 5, 6]}); + }); + +}); +