Files
overleaf-cep/services/web/test/unit/src/Project/ProjectApiController.test.mjs
Andrew Rumble e76a8ff267 Convert return new Promise to await new Promise
GitOrigin-RevId: 49404748cc90cb7bdef0460f7e9837196f81cae8
2025-06-25 08:06:59 +00:00

58 lines
1.6 KiB
JavaScript

import { vi } from 'vitest'
import sinon from 'sinon'
const modulePath = '../../../../app/src/Features/Project/ProjectApiController'
describe('Project api controller', function () {
beforeEach(async function (ctx) {
ctx.ProjectDetailsHandler = { getDetails: sinon.stub() }
vi.doMock(
'../../../../app/src/Features/Project/ProjectDetailsHandler',
() => ({
default: ctx.ProjectDetailsHandler,
})
)
ctx.controller = (await import(modulePath)).default
ctx.project_id = '321l3j1kjkjl'
ctx.req = {
params: {
project_id: ctx.project_id,
},
session: {
destroy: sinon.stub(),
},
}
ctx.res = {}
ctx.next = sinon.stub()
return (ctx.projDetails = { name: 'something' })
})
describe('getProjectDetails', function () {
it('should ask the project details handler for proj details', async function (ctx) {
await new Promise(resolve => {
ctx.ProjectDetailsHandler.getDetails.callsArgWith(
1,
null,
ctx.projDetails
)
ctx.res.json = data => {
ctx.ProjectDetailsHandler.getDetails
.calledWith(ctx.project_id)
.should.equal(true)
data.should.deep.equal(ctx.projDetails)
return resolve()
}
return ctx.controller.getProjectDetails(ctx.req, ctx.res)
})
})
it('should send a 500 if there is an error', function (ctx) {
ctx.ProjectDetailsHandler.getDetails.callsArgWith(1, 'error')
ctx.controller.getProjectDetails(ctx.req, ctx.res, ctx.next)
return ctx.next.calledWith('error').should.equal(true)
})
})
})