From e9d84e8b4a9a239246473ca770ce035ce8e66831 Mon Sep 17 00:00:00 2001 From: Weyoss Date: Sat, 30 Mar 2024 07:30:46 +0300 Subject: [PATCH] test: increase code coverage --- tests/tests/misc/test00002.test.ts | 87 ------------------- tests/tests/namespace/test00001.test.ts | 45 ++++++++++ .../queue-consumer-groups/test00006.test.ts | 44 ++++++++++ .../queue-consumer-groups/test00007.test.ts | 50 +++++++++++ 4 files changed, 139 insertions(+), 87 deletions(-) delete mode 100644 tests/tests/misc/test00002.test.ts create mode 100644 tests/tests/namespace/test00001.test.ts create mode 100644 tests/tests/queue-consumer-groups/test00006.test.ts create mode 100644 tests/tests/queue-consumer-groups/test00007.test.ts diff --git a/tests/tests/misc/test00002.test.ts b/tests/tests/misc/test00002.test.ts deleted file mode 100644 index f5d572eb..00000000 --- a/tests/tests/misc/test00002.test.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) - * Weyoss - * https://github.com/weyoss - * - * This source code is licensed under the MIT license found in the LICENSE file - * in the root directory of this source tree. - */ - -import { test } from '@jest/globals'; -test('Consumer/Producer: handling async errors', async () => { - /* - const consumer = bluebird.promisifyAll(new Consumer()); - await consumer.runAsync(); - expect(consumer.isRunning()).toBe(true); - eventBus.emit('consumer.messageHandlerError', new Error(), consumer.getId()); - - await bluebird.delay(5000); - - expect(consumer.isRunning()).toBe(false); - expect(consumer.isDown()).toBe(true); - - await consumer.runAsync(); - expect(consumer.isRunning()).toBe(true); - eventBus.emit('consumer.consumeMessageError', new Error(), consumer.getId()); - - await bluebird.delay(5000); - - expect(consumer.isRunning()).toBe(false); - expect(consumer.isDown()).toBe(true); - - await consumer.runAsync(); - expect(consumer.isRunning()).toBe(true); - eventBus.emit('consumer.dequeueMessageError', new Error(), consumer.getId()); - - await bluebird.delay(5000); - - expect(consumer.isRunning()).toBe(false); - expect(consumer.isDown()).toBe(true); - - await consumer.runAsync(); - expect(consumer.isRunning()).toBe(true); - eventBus.emit('consumer.heartbeatError', new Error(), consumer.getId()); - - await bluebird.delay(5000); - - expect(consumer.isRunning()).toBe(false); - expect(consumer.isDown()).toBe(true); - - await consumer.runAsync(); - expect(consumer.isRunning()).toBe(true); - eventBus.emit('consumer.workerError', new Error(), consumer.getId()); - - await bluebird.delay(5000); - - expect(consumer.isRunning()).toBe(false); - expect(consumer.isDown()).toBe(true); - - await consumer.runAsync(); - expect(consumer.isRunning()).toBe(true); - eventBus.emit('consumer.error', new Error(), consumer.getId()); - - await bluebird.delay(5000); - - expect(consumer.isRunning()).toBe(false); - expect(consumer.isDown()).toBe(true); - - await consumer.runAsync(); - expect(consumer.isRunning()).toBe(true); - eventBus.emit('base.error', new Error(), consumer.getId()); - - await bluebird.delay(5000); - - expect(consumer.isRunning()).toBe(false); - expect(consumer.isDown()).toBe(true); - - const producer = bluebird.promisifyAll(new Producer()); - await producer.runAsync(); - expect(producer.isRunning()).toBe(true); - eventBus.emit('producer.error', new Error(), producer.getId()); - - await bluebird.delay(5000); - - expect(producer.isRunning()).toBe(false); - expect(producer.isDown()).toBe(true); - */ -}); diff --git a/tests/tests/namespace/test00001.test.ts b/tests/tests/namespace/test00001.test.ts new file mode 100644 index 00000000..6bb6843c --- /dev/null +++ b/tests/tests/namespace/test00001.test.ts @@ -0,0 +1,45 @@ +/* + * Copyright (c) + * Weyoss + * https://github.com/weyoss + * + * This source code is licensed under the MIT license found in the LICENSE file + * in the root directory of this source tree. + */ + +import { expect, test } from '@jest/globals'; +import bluebird from 'bluebird'; +import { + EQueueDeliveryModel, + EQueueType, + Namespace, + NamespaceNotFoundError, + Queue, +} from '../../../src/lib/index.js'; + +test('Namespace', async () => { + const queue = bluebird.promisifyAll(new Queue()); + await queue.saveAsync( + 'myqueue', + EQueueType.FIFO_QUEUE, + EQueueDeliveryModel.POINT_TO_POINT, + ); + + const namespace = bluebird.promisifyAll(new Namespace()); + const nsList = await namespace.getNamespacesAsync(); + expect(nsList).toEqual(['testing']); + + const nsQueues = await namespace.getNamespaceQueuesAsync('testing'); + expect(nsQueues).toEqual([{ ns: 'testing', name: 'myqueue' }]); + + await namespace.deleteAsync('testing'); + const nsList1 = await namespace.getNamespacesAsync(); + expect(nsList1).toEqual([]); + + await expect(namespace.getNamespaceQueuesAsync('testing')).rejects.toThrow( + NamespaceNotFoundError, + ); + + await queue.shutdownAsync(); + await namespace.shutdownAsync(); +}); diff --git a/tests/tests/queue-consumer-groups/test00006.test.ts b/tests/tests/queue-consumer-groups/test00006.test.ts new file mode 100644 index 00000000..6eda16e3 --- /dev/null +++ b/tests/tests/queue-consumer-groups/test00006.test.ts @@ -0,0 +1,44 @@ +/* + * Copyright (c) + * Weyoss + * https://github.com/weyoss + * + * This source code is licensed under the MIT license found in the LICENSE file + * in the root directory of this source tree. + */ + +import { expect, test } from '@jest/globals'; +import bluebird from 'bluebird'; +import { + Consumer, + ConsumerGroupIdNotSupportedError, + EQueueDeliveryModel, + EQueueType, + IQueueParams, +} from '../../../src/lib/index.js'; +import { getQueue } from '../../common/queue.js'; + +test('ConsumerGroupIdNotSupportedError', async () => { + const queue1: IQueueParams = { + name: 'test-queue', + ns: 'ns1', + }; + + const queue = await getQueue(); + await queue.saveAsync( + queue1, + EQueueType.PRIORITY_QUEUE, + EQueueDeliveryModel.POINT_TO_POINT, + ); + + const consumer1 = bluebird.promisifyAll(new Consumer()); + await consumer1.consumeAsync( + { queue: queue1, groupId: 'my-group-1' }, + (msg, cb) => cb(), + ); + + await expect(consumer1.runAsync()).rejects.toThrow( + ConsumerGroupIdNotSupportedError, + ); + await consumer1.shutdownAsync(); +}); diff --git a/tests/tests/queue-consumer-groups/test00007.test.ts b/tests/tests/queue-consumer-groups/test00007.test.ts new file mode 100644 index 00000000..e250355c --- /dev/null +++ b/tests/tests/queue-consumer-groups/test00007.test.ts @@ -0,0 +1,50 @@ +/* + * Copyright (c) + * Weyoss + * https://github.com/weyoss + * + * This source code is licensed under the MIT license found in the LICENSE file + * in the root directory of this source tree. + */ + +import { expect, test } from '@jest/globals'; +import bluebird from 'bluebird'; +import { RedisKeysError } from '../../../src/common/redis-keys/redis-keys.error.js'; +import { + Consumer, + ConsumerGroups, + EQueueDeliveryModel, + EQueueType, + IQueueParams, +} from '../../../src/lib/index.js'; +import { getQueue } from '../../common/queue.js'; + +test('Consumer group ID validation', async () => { + const queue1: IQueueParams = { + name: 'test-queue', + ns: 'ns1', + }; + + const queue = await getQueue(); + await queue.saveAsync( + queue1, + EQueueType.PRIORITY_QUEUE, + EQueueDeliveryModel.PUB_SUB, + ); + + const consumer1 = bluebird.promisifyAll(new Consumer()); + await expect( + consumer1.consumeAsync( + { queue: queue1, groupId: 'my-group-1!' }, + (msg, cb) => cb(), + ), + ).rejects.toThrow(RedisKeysError); + + const consumerGroups = bluebird.promisifyAll(new ConsumerGroups()); + await expect( + consumerGroups.saveConsumerGroupAsync(queue1, 'my-group-1!'), + ).rejects.toThrow(RedisKeysError); + + await consumerGroups.shutdownAsync(); + await consumer1.shutdownAsync(); +});