Merge pull request #14235 from overleaf/ii-history-project-diff

Project history diff fix

GitOrigin-RevId: 42d55425873aa610560a03609c01e55606894940
This commit is contained in:
ilkin-overleaf 2023-08-16 12:50:54 +03:00 committed by Copybot
parent 975ea16317
commit 6db48cdaa3
2 changed files with 19 additions and 23 deletions

View file

@ -71,25 +71,11 @@ function _getInitialFiles(chunk, fromVersion) {
} }
function _applyAddFileToDiff(diff, operation) { function _applyAddFileToDiff(diff, operation) {
const change = diff[operation.pathname] return (diff[operation.pathname] = {
if (change != null) { pathname: operation.pathname,
// already exists, likely a delete so just cancel that and put the file back to unchanged operation: 'added',
if (change.operation !== 'removed') { editable: operation.file.isEditable(),
const err = new Errors.InconsistentChunkError( })
'trying to add file that already exists',
{ diff, operation }
)
throw err
}
delete diff[operation.pathname].operation
return delete diff[operation.pathname].deletedAtV
} else {
return (diff[operation.pathname] = {
pathname: operation.pathname,
operation: 'added',
editable: operation.file.isEditable(),
})
}
} }
function _applyEditFileToDiff(diff, operation) { function _applyEditFileToDiff(diff, operation) {

View file

@ -409,7 +409,7 @@ describe('FileTree Diffs', function () {
) )
}) })
it('should handle deleting the re-adding a file', function (done) { it('should handle deleting then re-adding a file', function (done) {
MockHistoryStore() MockHistoryStore()
.get(`/api/projects/${this.historyId}/versions/5/history`) .get(`/api/projects/${this.historyId}/versions/5/history`)
.reply(200, { .reply(200, {
@ -465,7 +465,8 @@ describe('FileTree Diffs', function () {
diff: [ diff: [
{ {
pathname: 'one.tex', pathname: 'one.tex',
editable: true, operation: 'added',
editable: null,
}, },
], ],
}) })
@ -655,7 +656,7 @@ describe('FileTree Diffs', function () {
) )
}) })
it('should return 422 with a chunk with an invalid add', function (done) { it('should return 200 with a chunk with an invalid add', function (done) {
MockHistoryStore() MockHistoryStore()
.get(`/api/projects/${this.historyId}/versions/6/history`) .get(`/api/projects/${this.historyId}/versions/6/history`)
.reply(200, { .reply(200, {
@ -697,7 +698,16 @@ describe('FileTree Diffs', function () {
if (error != null) { if (error != null) {
throw error throw error
} }
expect(statusCode).to.equal(422) expect(diff).to.deep.equal({
diff: [
{
pathname: 'foo.tex',
operation: 'added',
editable: null,
},
],
})
expect(statusCode).to.equal(200)
return done() return done()
} }
) )