|
@@ -0,0 +1,92 @@
|
|
|
|
|
+import { _consumePoints, POINTS_THRESHOLD } from './factory';
|
|
|
|
|
+
|
|
|
|
|
+// const mocks = vi.hoisted(() => {
|
|
|
|
|
+// return {
|
|
|
|
|
+// comsumeMock: vi.fn(),
|
|
|
|
|
+// };
|
|
|
|
|
+// });
|
|
|
|
|
+
|
|
|
|
|
+// vi.mock('rate-limiter-flexible', () => ({
|
|
|
|
|
+// RateLimiterMongo: vi.fn().mockImplementation(() => {
|
|
|
|
|
+// return {
|
|
|
|
|
+// consume: mocks.comsumeMock,
|
|
|
|
|
+// };
|
|
|
|
|
+// }),
|
|
|
|
|
+// }));
|
|
|
|
|
+
|
|
|
|
|
+describe('factory.ts', () => {
|
|
|
|
|
+
|
|
|
|
|
+ it('test', async() => {
|
|
|
|
|
+ // setup
|
|
|
|
|
+ const method = 'GET';
|
|
|
|
|
+ const key = 'test-key';
|
|
|
|
|
+ const maxRequests = 1;
|
|
|
|
|
+
|
|
|
|
|
+ const res = await _consumePoints('GET', key, { method, maxRequests });
|
|
|
|
|
+ expect(res).toBe(1);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // describe('_consumePoints()', () => {
|
|
|
|
|
+ // it('Should consume points as 1 * THRESHOLD if maxRequest: 1 is specified', async() => {
|
|
|
|
|
+ // // setup
|
|
|
|
|
+ // const method = 'GET';
|
|
|
|
|
+ // const key = 'test-key';
|
|
|
|
|
+ // const maxRequests = 1;
|
|
|
|
|
+
|
|
|
|
|
+ // // when
|
|
|
|
|
+ // const pointsToConsume = POINTS_THRESHOLD / maxRequests;
|
|
|
|
|
+ // await _consumePoints(method, key, { method, maxRequests });
|
|
|
|
|
+
|
|
|
|
|
+ // // then
|
|
|
|
|
+ // expect(mocks.comsumeMock).toHaveBeenCalledWith(key, pointsToConsume);
|
|
|
|
|
+ // expect(maxRequests * pointsToConsume).toBe(POINTS_THRESHOLD);
|
|
|
|
|
+ // });
|
|
|
|
|
+
|
|
|
|
|
+ // it('Should consume points as 2 * THRESHOLD if maxRequest: 2 is specified', async() => {
|
|
|
|
|
+ // // setup
|
|
|
|
|
+ // const method = 'GET';
|
|
|
|
|
+ // const key = 'test-key';
|
|
|
|
|
+ // const maxRequests = 2;
|
|
|
|
|
+
|
|
|
|
|
+ // // when
|
|
|
|
|
+ // const pointsToConsume = POINTS_THRESHOLD / maxRequests;
|
|
|
|
|
+ // await _consumePoints(method, key, { method, maxRequests });
|
|
|
|
|
+
|
|
|
|
|
+ // // then
|
|
|
|
|
+ // expect(mocks.comsumeMock).toHaveBeenCalledWith(key, pointsToConsume);
|
|
|
|
|
+ // expect(maxRequests * pointsToConsume).toBe(POINTS_THRESHOLD);
|
|
|
|
|
+ // });
|
|
|
|
|
+
|
|
|
|
|
+ // it('Should consume points as 3 * THRESHOLD if maxRequest: 3 is specified', async() => {
|
|
|
|
|
+ // // setup
|
|
|
|
|
+ // const method = 'GET';
|
|
|
|
|
+ // const key = 'test-key';
|
|
|
|
|
+ // const maxRequests = 3;
|
|
|
|
|
+
|
|
|
|
|
+ // // when
|
|
|
|
|
+ // const pointsToConsume = POINTS_THRESHOLD / maxRequests;
|
|
|
|
|
+ // await _consumePoints(method, key, { method, maxRequests });
|
|
|
|
|
+
|
|
|
|
|
+ // // then
|
|
|
|
|
+ // expect(mocks.comsumeMock).toHaveBeenCalledWith(key, pointsToConsume);
|
|
|
|
|
+ // expect(maxRequests * pointsToConsume).toBe(POINTS_THRESHOLD);
|
|
|
|
|
+ // });
|
|
|
|
|
+
|
|
|
|
|
+ // it('Should consume points as 500 * THRESHOLD if maxRequest: 500 is specified', async() => {
|
|
|
|
|
+ // // setup
|
|
|
|
|
+ // const method = 'GET';
|
|
|
|
|
+ // const key = 'test-key';
|
|
|
|
|
+ // const maxRequests = 500;
|
|
|
|
|
+
|
|
|
|
|
+ // // when
|
|
|
|
|
+ // const pointsToConsume = POINTS_THRESHOLD / maxRequests;
|
|
|
|
|
+ // await _consumePoints(method, key, { method, maxRequests });
|
|
|
|
|
+
|
|
|
|
|
+ // // then
|
|
|
|
|
+ // expect(mocks.comsumeMock).toHaveBeenCalledWith(key, pointsToConsume);
|
|
|
|
|
+ // expect(maxRequests * pointsToConsume).toBe(POINTS_THRESHOLD);
|
|
|
|
|
+ // });
|
|
|
|
|
+
|
|
|
|
|
+ // });
|
|
|
|
|
+});
|