@@ -24,6 +24,8 @@ import { FileQueue } from "../src/drivers/file.js";
2424import { createSQLiteQueue } from "../src/adapters/sqlite.js" ;
2525import { RedisQueue } from "../src/drivers/redis.js" ;
2626import { SqsQueue } from "../src/drivers/sqs.js" ;
27+ import { createMongooseQueue } from "../src/adapters/mongoose.js" ;
28+ import mongoose from "mongoose" ;
2729import type { Queue } from "../src/core/queue.js" ;
2830import type { JobRequestFull } from "../src/interfaces/job.ts" ;
2931
@@ -252,20 +254,49 @@ const drivers: Array<() => Promise<QueueDriverConfig> | QueueDriverConfig> = [
252254 } ,
253255 } ;
254256 } ,
255- // TODO: Add other drivers here later
256- // {
257- // name: 'MongooseQueue',
258- // beforeAll: async () => {
259- // // Start MongoDB container
260- // await startMongoContainer();
261- // },
262- // afterAll: async () => {
263- // // Stop MongoDB container
264- // await stopMongoContainer();
265- // },
266- // createQueue: async () => { ... },
267- // cleanup: async (queue) => { ... }
268- // }
257+ async ( ) => {
258+ let mongoContainer : StartedTestContainer ;
259+ let mongoUri : string ;
260+
261+ return {
262+ name : "MongooseQueue" ,
263+ features : {
264+ supportsPriority : true , // MongoDB supports priority ordering
265+ supportsDelayedJobs : true , // MongoDB supports delayed jobs
266+ supportsStatus : true , // MongoDB supports status queries
267+ } ,
268+ beforeAll : async ( ) => {
269+ mongoContainer = await new GenericContainer ( "mongo:7" )
270+ . withExposedPorts ( 27017 )
271+ . withStartupTimeout ( 60000 )
272+ . start ( ) ;
273+
274+ const mongoPort = mongoContainer . getMappedPort ( 27017 ) ;
275+ const mongoHost = mongoContainer . getHost ( ) ;
276+ mongoUri = `mongodb://${ mongoHost } :${ mongoPort } /test-queue-db` ;
277+
278+ // Connect mongoose
279+ await mongoose . connect ( mongoUri ) ;
280+ } ,
281+ afterAll : async ( ) => {
282+ if ( mongoose . connection . readyState === 1 ) {
283+ await mongoose . disconnect ( ) ;
284+ }
285+ if ( mongoContainer ) {
286+ await mongoContainer . stop ( ) ;
287+ }
288+ } ,
289+ createQueue : async ( ) => {
290+ return createMongooseQueue < TestJobs > ( "test-queue" ) ;
291+ } ,
292+ cleanup : async ( ) => {
293+ // Clean up MongoDB collections between tests
294+ if ( mongoose . connection . readyState === 1 && mongoose . connection . db ) {
295+ await mongoose . connection . db . dropDatabase ( ) ;
296+ }
297+ } ,
298+ } ;
299+ } ,
269300] ;
270301
271302async function resolveAllConfigs ( ) : Promise < Array < QueueDriverConfig > > {
0 commit comments