Files
overleaf-cep/services/web/test/unit/bootstrap.mjs
Brian Gough 3f75f35a8e Merge pull request #32766 from overleaf/bg-add-missing-unit-test-mocks
add missing mocks for @overleaf/metrics in unit tests

GitOrigin-RevId: 0903c3e26f88f92ef816a64f14ad053f159b31ed
2026-04-14 08:04:46 +00:00

70 lines
1.5 KiB
JavaScript

import { afterEach, beforeEach, chai, vi } from 'vitest'
import 'sinon-mongoose'
import sinon from 'sinon'
import logger from '@overleaf/logger'
import sinonChai from 'sinon-chai'
import chaiAsPromised from 'chai-as-promised'
import mongoose from 'mongoose'
import mongodb from 'mongodb-legacy'
mongodb.ObjectId.cacheHexString = true
/*
* Chai configuration
*/
// add chai.should()
chai.should()
// Load sinon-chai assertions so expect(stubFn).to.have.been.calledWith('abc')
// has a nicer failure messages
chai.use(sinonChai)
// Load promise support for chai
chai.use(chaiAsPromised)
// Do not truncate assertion errors
chai.config.truncateThreshold = 0
vi.mock('@overleaf/logger', async () => {
return {
default: {
debug: vi.fn(),
info: vi.fn(),
log: vi.fn(),
warn: vi.fn(),
err: vi.fn(),
error: vi.fn(),
fatal: vi.fn(),
},
}
})
// Mock metrics in unit tests, can be overridden
vi.mock('@overleaf/metrics', () => {
return {
default: { prom: { Counter: vi.fn(), Histogram: vi.fn() } },
}
})
beforeEach(ctx => {
// This function is a utility to duplicate the behaviour of passing `done` in place of `next` in an express route handler.
ctx.rejectOnError = reject => {
return err => {
if (err) {
reject(err)
}
}
}
ctx.logger = logger
})
afterEach(() => {
vi.resetAllMocks()
vi.resetModules()
sinon.restore()
const modelNames = mongoose.modelNames()
modelNames.forEach(name => {
delete mongoose.connection.models[name]
})
})