diff --git a/packages/data-schemas/src/utils/transactions.spec.ts b/packages/data-schemas/src/utils/transactions.spec.ts new file mode 100644 index 0000000000..7013bd2a45 --- /dev/null +++ b/packages/data-schemas/src/utils/transactions.spec.ts @@ -0,0 +1,11 @@ +import { getTransactionSupport } from './transactions'; + +describe('getTransactionSupport', () => { + // The cache-hit path does not touch the database, so a stub mongoose is fine. + const mongoose = {} as unknown as typeof import('mongoose'); + + it('returns the cached value on a cache hit (does not re-probe)', async () => { + await expect(getTransactionSupport(mongoose, true)).resolves.toBe(true); + await expect(getTransactionSupport(mongoose, false)).resolves.toBe(false); + }); +}); diff --git a/packages/data-schemas/src/utils/transactions.ts b/packages/data-schemas/src/utils/transactions.ts index b54447ffbf..799a74e936 100644 --- a/packages/data-schemas/src/utils/transactions.ts +++ b/packages/data-schemas/src/utils/transactions.ts @@ -55,9 +55,8 @@ export const getTransactionSupport = async ( mongoose: typeof import('mongoose'), transactionSupportCache: boolean | null, ): Promise => { - let transactionsSupported = false; - if (transactionSupportCache === null) { - transactionsSupported = await supportsTransactions(mongoose); + if (transactionSupportCache !== null) { + return transactionSupportCache; } - return transactionsSupported; + return await supportsTransactions(mongoose); };