Add Quick Lead workflow integration tests (#16862)
## Description This PR adds integration tests for the Quick Lead workflow, including a complete end-to-end test with full workflow execution. ### Key Changes 1. **Enabled SyncDriver for integration tests** - Jobs are now processed synchronously in tests - Modified `create-app.ts` to use `SyncDriver` instead of `BullMQ` - Added `MessageQueueExplorer` to discover and register workflow job handlers - This enables complete workflow execution in integration tests 2. **Added integration tests for Quick Lead workflow**: - Verify workflow exists and is active - Verify workflow version has correct structure (MANUAL trigger, FORM step, CREATE_RECORD steps) - Test workflow triggering creates workflow run with correct initial state - Test stop workflow run on a running workflow - **Full end-to-end test**: trigger → submit form → verify Company and Person records created ### Test Coverage The complete end-to-end test verifies: - Workflow triggers and is in RUNNING status (waiting on FORM step) - Form submission with test data succeeds - Workflow completes successfully with all steps in SUCCESS status - Company record is created with correct name and domain - Person record is created with correct name and email - Records are properly cleaned up after test ### How to Run Tests ```bash npx nx run twenty-server:test:integration -- --testPathPattern="quick-lead-workflow" ``` Or with database reset: ```bash npx nx run twenty-server:test:integration:with-db-reset -- --testPathPattern="quick-lead-workflow" ```
This commit is contained in:
@@ -14,6 +14,9 @@ import { CAPTCHA_DRIVER } from 'src/engine/core-modules/captcha/constants/captch
|
||||
import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
|
||||
import { ExceptionHandlerMockService } from 'src/engine/core-modules/exception-handler/mocks/exception-handler-mock.service';
|
||||
import { MockedUnhandledExceptionFilter } from 'src/engine/core-modules/exception-handler/mocks/mock-unhandled-exception.filter';
|
||||
import { SyncDriver } from 'src/engine/core-modules/message-queue/drivers/sync.driver';
|
||||
import { QUEUE_DRIVER } from 'src/engine/core-modules/message-queue/message-queue.constants';
|
||||
import { MessageQueueModule } from 'src/engine/core-modules/message-queue/message-queue.module';
|
||||
|
||||
interface TestingModuleCreatePreHook {
|
||||
(moduleBuilder: TestingModuleBuilder): TestingModuleBuilder;
|
||||
@@ -26,6 +29,10 @@ export type TestingAppCreatePreHook = (
|
||||
app: NestExpressApplication,
|
||||
) => Promise<void>;
|
||||
|
||||
// Shared SyncDriver instance for all queues in tests
|
||||
// This enables synchronous processing of jobs during integration tests
|
||||
const syncDriver = new SyncDriver();
|
||||
|
||||
/**
|
||||
* Sets basic integration testing module of app
|
||||
*/
|
||||
@@ -38,7 +45,7 @@ export const createApp = async (
|
||||
const stripeSDKMockService = new StripeSDKMockService();
|
||||
const mockExceptionHandlerService = new ExceptionHandlerMockService();
|
||||
let moduleBuilder: TestingModuleBuilder = Test.createTestingModule({
|
||||
imports: [AppModule, CommandModule],
|
||||
imports: [AppModule, CommandModule, MessageQueueModule.registerExplorer()],
|
||||
providers: [
|
||||
{
|
||||
provide: APP_FILTER,
|
||||
@@ -53,7 +60,9 @@ export const createApp = async (
|
||||
.overrideProvider(CAPTCHA_DRIVER)
|
||||
.useValue({
|
||||
validate: async () => ({ success: true }),
|
||||
});
|
||||
})
|
||||
.overrideProvider(QUEUE_DRIVER)
|
||||
.useValue(syncDriver);
|
||||
|
||||
if (config.moduleBuilderHook) {
|
||||
moduleBuilder = config.moduleBuilderHook(moduleBuilder);
|
||||
|
||||
Reference in New Issue
Block a user