Promisify LatestSnapshotTests

GitOrigin-RevId: 40b0811e25ac9ee75c295c89cec7ad07570007c4
This commit is contained in:
Domagoj Kriskovic
2025-10-02 10:27:02 +02:00
committed by Copybot
parent da591924b0
commit 3c55ed34ee
2 changed files with 39 additions and 62 deletions

View File

@@ -12,41 +12,31 @@ const MockWeb = () => nock('http://127.0.0.1:3000')
const fixture = path => new URL(`../fixtures/${path}`, import.meta.url)
describe('LatestSnapshot', function () {
beforeEach(function (done) {
ProjectHistoryApp.ensureRunning(error => {
if (error) {
throw error
}
beforeEach(async function () {
await ProjectHistoryApp.promises.ensureRunning()
this.historyId = new ObjectId().toString()
MockHistoryStore().post('/api/projects').reply(200, {
projectId: this.historyId,
})
ProjectHistoryClient.initializeProject(
this.historyId,
(error, v1Project) => {
if (error) {
throw error
}
this.projectId = new ObjectId().toString()
MockWeb()
.get(`/project/${this.projectId}/details`)
.reply(200, {
name: 'Test Project',
overleaf: { history: { id: v1Project.id } },
})
done()
}
)
this.historyId = new ObjectId().toString()
MockHistoryStore().post('/api/projects').reply(200, {
projectId: this.historyId,
})
const v1Project = await ProjectHistoryClient.promises.initializeProject(
this.historyId
)
this.projectId = new ObjectId().toString()
MockWeb()
.get(`/project/${this.projectId}/details`)
.reply(200, {
name: 'Test Project',
overleaf: { history: { id: v1Project.id } },
})
})
afterEach(function () {
nock.cleanAll()
})
it('should return the snapshot with applied changes, metadata and without full content', function (done) {
it('should return the snapshot with applied changes, metadata and without full content', async function () {
MockHistoryStore()
.get(`/api/projects/${this.historyId}/latest/history`)
.replyWithFile(200, fixture('chunks/0-3.json'))
@@ -57,30 +47,25 @@ describe('LatestSnapshot', function () {
const changes = fixtureData.chunk.history.changes
const lastTimestamp = changes[changes.length - 1].timestamp
ProjectHistoryClient.getLatestSnapshot(this.projectId, (error, body) => {
if (error) {
throw error
}
expect(body).to.deep.equal({
snapshot: {
files: {
'main.tex': {
hash: 'f28571f561d198b87c24cc6a98b78e87b665e22d',
stringLength: 20649,
operations: [{ textOperation: [1912, 'Hello world', 18726] }],
metadata: { main: true },
},
'foo.tex': {
hash: '4f785a4c192155b240e3042b3a7388b47603f423',
stringLength: 41,
operations: [{ textOperation: [26, '\n\nFour five six'] }],
},
const body = await ProjectHistoryClient.getLatestSnapshot(this.projectId)
expect(body).to.deep.equal({
snapshot: {
files: {
'main.tex': {
hash: 'f28571f561d198b87c24cc6a98b78e87b665e22d',
stringLength: 20649,
operations: [{ textOperation: [1912, 'Hello world', 18726] }],
metadata: { main: true },
},
'foo.tex': {
hash: '4f785a4c192155b240e3042b3a7388b47603f423',
stringLength: 41,
operations: [{ textOperation: [26, '\n\nFour five six'] }],
},
timestamp: lastTimestamp,
},
version: 3,
})
done()
timestamp: lastTimestamp,
},
version: 3,
})
})
})

View File

@@ -114,20 +114,12 @@ export async function getChangesInChunkSince(projectId, since, options = {}) {
}
}
export function getLatestSnapshot(projectId, callback) {
request.get(
{
url: `http://127.0.0.1:3054/project/${projectId}/snapshot`,
json: true,
},
(error, res, body) => {
if (error) {
return callback(error)
}
expect(res.statusCode).to.equal(200)
callback(null, body)
}
export async function getLatestSnapshot(projectId) {
const { response, json } = await fetchJsonWithResponse(
`http://127.0.0.1:3054/project/${projectId}/snapshot`
)
expect(response.status).to.equal(200)
return json
}
export function getSnapshot(projectId, pathname, version, options, callback) {