diff --git a/tests/cache-debug.test.ts b/tests/cache-debug.test.ts index cfe8a98..41386d3 100644 --- a/tests/cache-debug.test.ts +++ b/tests/cache-debug.test.ts @@ -1,17 +1,14 @@ -import fs from 'node:fs' -import { MongoMemoryServer } from 'mongodb-memory-server' import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest' -import mongoose, { model } from 'mongoose' +import mongoose from 'mongoose' import CacheMongoose from '../src/plugin' +import server from './mongo/server' import User from './models/User' describe('cache-debug', async () => { - let mongo: MongoMemoryServer + const instance = server('cache-debug') let cache: CacheMongoose - const dbName = 'cache-debug' - const dbPath = `./tests/mongo/${dbName}` beforeAll(async () => { cache = CacheMongoose.init(mongoose, { @@ -19,29 +16,13 @@ describe('cache-debug', async () => { debug: true, }) - fs.mkdirSync(dbPath, { recursive: true }) - mongo = await MongoMemoryServer.create({ - instance: { - dbName, - dbPath, - }, - }) - - const uri = mongo.getUri() - await mongoose.connect(uri) - await cache.clear() + await instance.create() }) afterAll(async () => { + await cache.clear() await cache.close() - await mongoose.connection.dropDatabase() - await mongoose.connection.close() - await mongo.stop({ doCleanup: true, force: true }) - try { - fs.rmdirSync(dbPath, { recursive: true }) - } catch { - // Folder is already deleted - } + await instance.destroy() }) beforeEach(async () => { diff --git a/tests/cache-memory.test.ts b/tests/cache-memory.test.ts index 57a2eae..67b6db6 100644 --- a/tests/cache-memory.test.ts +++ b/tests/cache-memory.test.ts @@ -1,46 +1,27 @@ -import fs from 'node:fs' -import { MongoMemoryServer } from 'mongodb-memory-server' import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest' -import mongoose, { model } from 'mongoose' +import mongoose from 'mongoose' import CacheMongoose from '../src/plugin' +import server from './mongo/server' import User from './models/User' describe('cache-memory', async () => { - let mongo: MongoMemoryServer + const instance = server('cache-memory') let cache: CacheMongoose - const dbName = 'cache-memory' - const dbPath = `./tests/mongo/${dbName}` beforeAll(async () => { cache = CacheMongoose.init(mongoose, { engine: 'memory', }) - fs.mkdirSync(dbPath, { recursive: true }) - mongo = await MongoMemoryServer.create({ - instance: { - dbName, - dbPath, - }, - }) - - const uri = mongo.getUri() - await mongoose.connect(uri) - await cache.clear() + await instance.create() }) afterAll(async () => { + await cache.clear() await cache.close() - await mongoose.connection.dropDatabase() - await mongoose.connection.close() - await mongo.stop({ doCleanup: true, force: true }) - try { - fs.rmdirSync(dbPath, { recursive: true }) - } catch { - // Folder is already deleted - } + await instance.destroy() }) beforeEach(async () => { diff --git a/tests/cache-redis.test.ts b/tests/cache-redis.test.ts index b4e1f44..204fcf6 100644 --- a/tests/cache-redis.test.ts +++ b/tests/cache-redis.test.ts @@ -4,6 +4,7 @@ import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest' import mongoose from 'mongoose' import plugin from '../src/plugin' +import server from './mongo/server' import Story from './models/Story' import User from './models/User' @@ -14,10 +15,8 @@ import { Types } from 'mongoose' import type CacheMongoose from '../src/plugin' describe('cache-redis', async () => { - let mongo: MongoMemoryServer + const instance = server('cache-redis') let cache: CacheMongoose - const dbName = 'cache-redis' - const dbPath = `./tests/mongo/${dbName}` beforeAll(async () => { cache = plugin.init(mongoose, { @@ -29,28 +28,13 @@ describe('cache-redis', async () => { defaultTTL: '10 seconds', }) - fs.mkdirSync(dbPath, { recursive: true }) - mongo = await MongoMemoryServer.create({ - instance: { - dbName, - dbPath, - }, - }) - const uri = mongo.getUri() - await mongoose.connect(uri) - await cache.clear() + await instance.create() }) afterAll(async () => { + await cache.clear() await cache.close() - await mongoose.connection.dropDatabase() - await mongoose.connection.close() - await mongo.stop({ doCleanup: true }) - try { - fs.rmdirSync(dbPath, { recursive: true }) - } catch { - // Folder is already deleted - } + await instance.destroy() }) beforeEach(async () => { diff --git a/tests/mongo/.gitignore b/tests/mongo/.gitignore index c96a04f..6b3580e 100644 --- a/tests/mongo/.gitignore +++ b/tests/mongo/.gitignore @@ -1,2 +1,3 @@ * -!.gitignore \ No newline at end of file +!.gitignore +!server.ts \ No newline at end of file diff --git a/tests/mongo/server.ts b/tests/mongo/server.ts new file mode 100644 index 0000000..a5669bc --- /dev/null +++ b/tests/mongo/server.ts @@ -0,0 +1,32 @@ +import fs from 'node:fs' +import mongoose from 'mongoose' + +import { MongoMemoryServer } from 'mongodb-memory-server' + +const server = (dbName: string) => { + let mongo: MongoMemoryServer + const dbPath = `./tests/mongo/${dbName}` + + const create = async () => { + fs.mkdirSync(dbPath, { recursive: true }) + mongo = await MongoMemoryServer.create({ + instance: { + dbName, + dbPath, + }, + }) + + const uri = mongo.getUri() + await mongoose.connect(uri) + } + + const destroy = async () => { + await mongoose.connection.dropDatabase() + await mongoose.connection.close() + await mongo.stop({ doCleanup: true, force: true }) + } + + return { create, destroy } +} + +export default server \ No newline at end of file