Skip to content

Commit 004fce4

Browse files
authored
Merge pull request #1589 from CVEProject/dr_joint_approval_submit_updates
2 parents 5aae371 + 00a4bdf commit 004fce4

File tree

3 files changed

+22
-14
lines changed

3 files changed

+22
-14
lines changed

src/controller/review-object.controller/review-object.controller.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,15 @@ async function approveReviewObject (req, res, next) {
4343
const repo = req.ctx.repositories.getReviewObjectRepository()
4444
const userRepo = req.ctx.repositories.getBaseUserRepository()
4545
const UUID = req.params.uuid
46+
const body = req.body
4647
const session = await mongoose.startSession()
4748
let value
4849

4950
try {
5051
session.startTransaction()
5152
const requestingUserUUID = await userRepo.getUserUUID(req.ctx.user, req.ctx.org, { session })
5253

53-
value = await repo.approveReviewOrgObject(UUID, requestingUserUUID, { session })
54+
value = await repo.approveReviewOrgObject(UUID, requestingUserUUID, { session }, body)
5455
await session.commitTransaction()
5556
} catch (updateErr) {
5657
await session.abortTransaction()

src/repositories/reviewObjectRepository.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const ReviewObjectModel = require('../model/reviewobject')
22
const BaseRepository = require('./baseRepository')
33
const BaseOrgRepository = require('./baseOrgRepository')
44
const uuid = require('uuid')
5+
const _ = require('lodash')
56

67
class ReviewObjectRepository extends BaseRepository {
78
async findOneByOrgShortName (orgShortName, options = {}) {
@@ -115,7 +116,7 @@ class ReviewObjectRepository extends BaseRepository {
115116
return result.toObject()
116117
}
117118

118-
async approveReviewOrgObject (UUID, requestingUserUUID, options = {}) {
119+
async approveReviewOrgObject (UUID, requestingUserUUID, options = {}, newReviewData) {
119120
console.log('Approving review object with UUID:', UUID)
120121
const reviewObject = await this.findOneByUUID(UUID, options)
121122
if (!reviewObject) {
@@ -129,13 +130,20 @@ class ReviewObjectRepository extends BaseRepository {
129130
}
130131

131132
// We need to trigger the org to update
132-
await baseOrgRepository.updateOrgFull(org.short_name, reviewObject.new_review_data, options, false, requestingUserUUID, false, true)
133+
let dataToUpdate
134+
if (newReviewData && Object.keys(newReviewData).length) {
135+
dataToUpdate = _.merge(org.toObject(), newReviewData)
136+
} else {
137+
dataToUpdate = reviewObject.new_review_data
138+
}
139+
await baseOrgRepository.updateOrgFull(org.short_name, dataToUpdate, options, false, requestingUserUUID, false, true)
133140

134-
reviewObject.status = 'approved'
141+
// Delete the review object after approval
142+
await this.deleteReviewObjectByUUID(UUID, options)
135143

136-
await reviewObject.save({ options })
137-
const result = reviewObject.toObject()
138-
return result
144+
// Return the updated organization
145+
const updatedOrg = await baseOrgRepository.findOneByUUID(reviewObject.target_object_uuid, options)
146+
return updatedOrg ? updatedOrg.toObject() : null
139147
}
140148
}
141149

test/integration-tests/registry-org/registryOrgWithJointReviewTest.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -147,24 +147,24 @@ describe('Testing Joint approval', () => {
147147
expect(res.body.hard_quota).to.equal(10000)
148148
})
149149
})
150-
it('Secretariat can approve the ORG review', async function () {
150+
it('Secretariat can approve the ORG review with body parameter', async function () {
151+
const newBody = { short_name: 'final_non_secretariat_org', hard_quota: 20000 }
151152
await chai.request(app)
152153
.put(`/api/review/org/${reviewUUID}/approve`)
153154
.set(secretariatHeaders)
155+
.send(newBody)
154156
.then((res) => {
155157
expect(res).to.have.status(200)
156-
expect(res.body.status).to.equal('approved')
157158
})
158-
})
159-
it('Check to see if the org was fully updated', async () => {
159+
// Verify that the org was updated with the new body values
160160
await chai.request(app)
161161
.get(`/api/registryOrg/${orgUUID}`)
162162
.set(secretariatHeaders)
163163
.then((res, err) => {
164164
expect(err).to.be.undefined
165165
expect(res).to.have.status(200)
166-
expect(res.body.short_name).to.equal('new_non_secretariat_org')
167-
expect(res.body.hard_quota).to.equal(10000)
166+
expect(res.body.short_name).to.equal('final_non_secretariat_org')
167+
expect(res.body.hard_quota).to.equal(20000)
168168
})
169169
})
170170
})
@@ -310,7 +310,6 @@ describe('Testing Joint approval', () => {
310310
.set(secretariatHeaders)
311311
.then((res) => {
312312
expect(res).to.have.status(200)
313-
expect(res.body.status).to.equal('approved')
314313
})
315314
})
316315
it('Check to see if the org was fully updated', async () => {

0 commit comments

Comments
 (0)