[web] use a global shared mock for the metrics module (#32799)

GitOrigin-RevId: 72874ba6c06c2a602b01cc029bc9c71ce3ce8892
This commit is contained in:
Jakob Ackermann
2026-04-15 08:05:38 +00:00
committed by Copybot
parent e9b50b08bf
commit 917d2700c8
30 changed files with 41 additions and 172 deletions
+20 -1
View File
@@ -2,6 +2,7 @@ import { afterEach, beforeEach, chai, vi } from 'vitest'
import 'sinon-mongoose'
import sinon from 'sinon'
import logger from '@overleaf/logger'
import Metrics from '@overleaf/metrics'
import sinonChai from 'sinon-chai'
import chaiAsPromised from 'chai-as-promised'
import mongoose from 'mongoose'
@@ -42,7 +43,23 @@ vi.mock('@overleaf/logger', async () => {
// Mock metrics in unit tests, can be overridden
vi.mock('@overleaf/metrics', () => {
return {
default: { prom: { Counter: vi.fn(), Histogram: vi.fn() } },
default: {
inc: sinon.stub(),
count: sinon.stub(),
timing: sinon.stub(),
summary: sinon.stub(),
gauge: sinon.stub(),
Timer: class {
constructor() {
this.labels = {}
}
done() {
return 1
}
},
prom: { Counter: sinon.stub(), Histogram: sinon.stub() },
},
}
})
@@ -56,12 +73,14 @@ beforeEach(ctx => {
}
}
ctx.logger = logger
ctx.Metrics = Metrics
})
afterEach(() => {
vi.resetAllMocks()
vi.resetModules()
sinon.restore()
sinon.resetHistory()
const modelNames = mongoose.modelNames()
modelNames.forEach(name => {
delete mongoose.connection.models[name]