mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-15 17:37:38 +00:00
Merge pull request #3651 from overleaf/jpa-hide-deleted-at-field
[misc] joinProject: hide deletedAt field in public deletedDocs array GitOrigin-RevId: 0ee11c2a8222304d5d1c4edafa2105b7ad43d5d8
This commit is contained in:
parent
e3790b299f
commit
f5965217c4
4 changed files with 97 additions and 1 deletions
|
@ -20,6 +20,10 @@ module.exports = ProjectEditorHandler = {
|
|||
|
||||
buildProjectModelView(project, members, invites) {
|
||||
let owner, ownerFeatures
|
||||
project.deletedDocs.forEach(doc => {
|
||||
// The frontend does not use this field.
|
||||
delete doc.deletedAt
|
||||
})
|
||||
const result = {
|
||||
_id: project._id,
|
||||
name: project.name,
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
const User = require('./helpers/User')
|
||||
const { expect } = require('chai')
|
||||
require('./helpers/MockDocstoreApi')
|
||||
require('./helpers/MockV1Api')
|
||||
require('./helpers/MockProjectHistoryApi')
|
||||
|
||||
describe('EditorHttpController', function() {
|
||||
beforeEach('login', function(done) {
|
||||
this.user = new User()
|
||||
this.user.login(done)
|
||||
})
|
||||
beforeEach('create project', function(done) {
|
||||
this.projectName = 'wombat'
|
||||
this.user.createProject(this.projectName, (error, projectId) => {
|
||||
if (error) return done(error)
|
||||
this.projectId = projectId
|
||||
done()
|
||||
})
|
||||
})
|
||||
beforeEach('create doc', function(done) {
|
||||
this.user.createDocInProject(
|
||||
this.projectId,
|
||||
null,
|
||||
'potato.tex',
|
||||
(error, docId) => {
|
||||
this.docId = docId
|
||||
done(error)
|
||||
}
|
||||
)
|
||||
})
|
||||
|
||||
describe('joinProject', function() {
|
||||
it('should emit an empty deletedDocs array', function(done) {
|
||||
this.user.joinProject(this.projectId, (error, details) => {
|
||||
if (error) return done(error)
|
||||
|
||||
expect(details.project.deletedDocs).to.deep.equal([])
|
||||
done()
|
||||
})
|
||||
})
|
||||
|
||||
describe('after deleting a doc', function() {
|
||||
beforeEach(function(done) {
|
||||
this.user.deleteItemInProject(this.projectId, 'doc', this.docId, done)
|
||||
})
|
||||
|
||||
it('should include the deleted doc in the deletedDocs array', function(done) {
|
||||
this.user.joinProject(this.projectId, (error, details) => {
|
||||
if (error) return done(error)
|
||||
|
||||
expect(details.project.deletedDocs).to.deep.equal([
|
||||
{ _id: this.docId, name: 'potato.tex' }
|
||||
])
|
||||
done()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
|
@ -509,6 +509,33 @@ class User {
|
|||
)
|
||||
}
|
||||
|
||||
joinProject(projectId, callback) {
|
||||
this.request.post(
|
||||
{
|
||||
url: `/project/${projectId}/join`,
|
||||
qs: { user_id: this._id },
|
||||
auth: {
|
||||
user: settings.apis.web.user,
|
||||
pass: settings.apis.web.pass,
|
||||
sendImmediately: true
|
||||
},
|
||||
json: true,
|
||||
jar: false
|
||||
},
|
||||
(error, res, body) => {
|
||||
if (error) {
|
||||
return callback(error)
|
||||
}
|
||||
if (res.statusCode < 200 || res.statusCode >= 300) {
|
||||
return callback(
|
||||
new Error(`failed to join project ${projectId} ${res.statusCode}`)
|
||||
)
|
||||
}
|
||||
callback(null, body)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
addUserToProject(projectId, user, privileges, callback) {
|
||||
let updateOp
|
||||
if (privileges === 'readAndWrite') {
|
||||
|
|
|
@ -150,7 +150,13 @@ describe('ProjectEditorHandler', function() {
|
|||
|
||||
it('should include the deletedDocs', function() {
|
||||
should.exist(this.result.deletedDocs)
|
||||
return this.result.deletedDocs.should.equal(this.project.deletedDocs)
|
||||
this.result.deletedDocs.should.deep.equal([
|
||||
{
|
||||
// omit deletedAt field
|
||||
_id: this.project.deletedDocs[0]._id,
|
||||
name: this.project.deletedDocs[0].name
|
||||
}
|
||||
])
|
||||
})
|
||||
|
||||
it('should gather readOnly_refs and collaberators_refs into a list of members', function() {
|
||||
|
|
Loading…
Add table
Reference in a new issue