| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import { DefaultLogger, LogLevel, mergeConfig } from '@vendure/core';
- import { createTestEnvironment } from '@vendure/testing';
- import { RedisConnection } from 'bullmq';
- import path from 'path';
- import { initialData } from '../../../e2e-common/e2e-initial-data';
- import { testConfig, TEST_SETUP_TIMEOUT_MS } from '../../../e2e-common/test-config';
- import { awaitRunningJobs } from '../../core/e2e/utils/await-running-jobs';
- import { BullMQJobQueuePlugin } from '../src/bullmq/plugin';
- // eslint-disable-next-line @typescript-eslint/no-var-requires
- const Redis = require('ioredis');
- // eslint-disable-next-line @typescript-eslint/no-var-requires
- const { redisHost, redisPort } = require('./constants');
- jest.setTimeout(10 * 3000);
- // TODO: How to solve issues with Jest open handles after test suite finishes?
- // See https://github.com/luin/ioredis/issues/1088
- describe('BullMQJobQueuePlugin', () => {
- const redisConnection: any = new Redis({
- host: redisHost,
- port: redisPort,
- });
- const { server, adminClient, shopClient } = createTestEnvironment(
- mergeConfig(testConfig(), {
- apiOptions: {
- port: 4050,
- },
- logger: new DefaultLogger({ level: LogLevel.Info }),
- plugins: [
- BullMQJobQueuePlugin.init({
- connection: redisConnection,
- workerOptions: {
- prefix: 'e2e',
- },
- queueOptions: {
- prefix: 'e2e',
- },
- }),
- ],
- }),
- );
- beforeAll(async () => {
- await server.init({
- initialData,
- productsCsvPath: path.join(__dirname, 'fixtures/e2e-products-minimal.csv'),
- customerCount: 1,
- });
- await adminClient.asSuperAdmin();
- }, TEST_SETUP_TIMEOUT_MS);
- afterAll(async () => {
- await awaitRunningJobs(adminClient);
- await server.destroy();
- // redis.quit() creates a thread to close the connection.
- // We wait until all threads have been run once to ensure the connection closes.
- // See https://stackoverflow.com/a/54560610/772859
- await new Promise(resolve => setTimeout(resolve, 100));
- });
- it('works', () => {
- expect(1).toBe(1);
- });
- });
|