This commit is contained in:
Alessio Gravili
2024-04-01 23:05:54 -04:00
parent ee3ae6025f
commit 34fe6182c8
2 changed files with 57 additions and 46 deletions

View File

@@ -25,11 +25,11 @@ import {
UploadFeature,
lexicalEditor,
} from '@payloadcms/richtext-lexical'
import { MongoMemoryReplSet } from 'mongodb-memory-server'
// import { slateEditor } from '@payloadcms/richtext-slate'
import { type Config, buildConfig } from 'payload/config'
import sharp from 'sharp'
import { getDBAdapter } from './getDBAdapter.js'
import { reInitEndpoint } from './helpers/reInit.js'
import { localAPIEndpoint } from './helpers/sdk/endpoint.js'
// process.env.PAYLOAD_DATABASE = 'postgres'
@@ -62,57 +62,14 @@ const databaseAdapters = {
},
}),
}
let cached = global._cachedDBAdapter
if (!cached) {
// eslint-disable-next-line no-multi-assign
cached = global._cachedDBAdapter = {
promise: null,
adapter: null,
}
}
export async function buildConfigWithDefaults(
testConfig?: Partial<Config>,
): Promise<SanitizedConfig> {
if (!process.env.PAYLOAD_DATABASE || process.env.PAYLOAD_DATABASE === 'mongodb') {
if (process.env.JEST_WORKER_ID || process.env.PW_TS_ESM_LOADER_ON) {
console.log('Good: Using in-memory MongoDB for tests')
if (cached.adapter) {
console.log('MDB: Cached')
databaseAdapters.mongodb = cached.adapter
} else {
if (!cached.promise) {
console.log('MDB: Creating')
cached.promise = MongoMemoryReplSet.create({
replSet: {
count: 3,
dbName: 'payloadmemory',
},
}).then((server) => {
const url = server.getUri()
return mongooseAdapter({
mongoMemoryServer: server,
url,
})
})
}
console.log('MDB: Awaiting')
cached.adapter = await cached.promise
cached.promise = null
databaseAdapters.mongodb = cached.adapter
}
} else {
console.log('Bad1!!')
}
} else {
console.log('Bad2!!')
}
const adapter = await getDBAdapter()
const config: Config = {
db: databaseAdapters[process.env.PAYLOAD_DATABASE || 'mongodb'],
db: adapter || databaseAdapters[process.env.PAYLOAD_DATABASE || 'mongodb'],
secret: 'TEST_SECRET',
//editor: slateEditor({}),
// editor: slateEditor({

54
test/getDBAdapter.ts Normal file
View File

@@ -0,0 +1,54 @@
import type { DatabaseAdapterObj } from 'payload/database'
import { mongooseAdapter } from '@payloadcms/db-mongodb'
import { MongoMemoryReplSet } from 'mongodb-memory-server'
let cached: {
adapter: DatabaseAdapterObj | null
promise: Promise<DatabaseAdapterObj> | null
} = global._cachedDBAdapter
if (!cached) {
// eslint-disable-next-line no-multi-assign
cached = global._cachedDBAdapter = {
promise: null,
adapter: null,
}
}
export const getDBAdapter = async (): Promise<DatabaseAdapterObj> => {
if (!process.env.PAYLOAD_DATABASE || process.env.PAYLOAD_DATABASE === 'mongodb') {
if (process.env.JEST_WORKER_ID || process.env.PW_TS_ESM_LOADER_ON) {
console.log('Good: Using in-memory MongoDB for tests')
if (cached.adapter) {
console.log('MDB: Cached')
return cached.adapter
}
if (!cached.promise) {
console.log('MDB: Creating')
cached.promise = MongoMemoryReplSet.create({
replSet: {
count: 3,
dbName: 'payloadmemory',
},
}).then((server) => {
const url = server.getUri()
return mongooseAdapter({
mongoMemoryServer: server,
url,
})
})
}
console.log('MDB: Awaiting')
cached.adapter = await cached.promise
return cached.adapter
} else {
console.log('Bad1!!')
}
} else {
console.log('Bad2!!')
}
return cached.adapter
}