Skip to content

Commit 2a90201

Browse files
committed
Add legacyReviewId to review endpoints
1 parent 2410f57 commit 2a90201

File tree

7 files changed

+58
-6
lines changed

7 files changed

+58
-6
lines changed

docs/Submission API.postman_collection.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,7 @@
825825
],
826826
"body": {
827827
"mode": "raw",
828-
"raw": "{\n\t\"score\": 92.5,\n\t\"scoreCardId\": 123456789,\n\t\"submissionId\": \"{{submissionID}}\",\n\t\"status\": \"queued\",\n\t\"typeId\": \"c56a4180-65aa-42ec-a945-5fd21dec0503\",\n\t\"reviewerId\": \"c56a4180-65aa-42ec-a945-5fd21d3d26f8\"\n}"
828+
"raw": "{\n\t\"score\": 92.5,\n\t\"legacyReviewId\": \"6b4faff1-7685-4866-a2e3-24afabf5c2c9\",\n\t\"scoreCardId\": 123456789,\n\t\"submissionId\": \"{{submissionID}}\",\n\t\"status\": \"queued\",\n\t\"typeId\": \"c56a4180-65aa-42ec-a945-5fd21dec0503\",\n\t\"reviewerId\": \"c56a4180-65aa-42ec-a945-5fd21d3d26f8\"\n}"
829829
},
830830
"url": {
831831
"raw": "{{URL}}/reviews",
@@ -1405,7 +1405,7 @@
14051405
],
14061406
"body": {
14071407
"mode": "raw",
1408-
"raw": "{\n\t\"score\": 90.5,\n\t\"scoreCardId\": 123456789,\n\t\"submissionId\": \"{{submissionID}}\",\n\t\"status\": \"completed\",\n\t\"typeId\": \"c56a4180-65aa-42ec-a945-5fd21dec0503\",\n\t\"reviewerId\": \"c56a4180-65aa-42ec-a945-5fd21d3d26f8\"\n}"
1408+
"raw": "{\n\t\"score\": 90.5,\n\t\"legacyReviewId\": \"6b4faff1-7685-4866-a2e3-24afabf5c2c9\",\n\t\"scoreCardId\": 123456789,\n\t\"submissionId\": \"{{submissionID}}\",\n\t\"status\": \"completed\",\n\t\"typeId\": \"c56a4180-65aa-42ec-a945-5fd21dec0503\",\n\t\"reviewerId\": \"c56a4180-65aa-42ec-a945-5fd21d3d26f8\"\n}"
14091409
},
14101410
"url": {
14111411
"raw": "{{URL}}/reviews/{{reviewID}}",

docs/swagger.yaml

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -899,7 +899,7 @@ paths:
899899
description: |
900900
Get all reviews. Link headers are sent back and they have rel set to prev, next, first, last and contain the relevant URL.
901901
902-
Resulted collection of reviews can be filtered using filter parameters `score`, `typeId`, `reviewerId`, `scoreCardId`, `status` (all filter parameters are optional and combined by the logical operation `AND`).
902+
Resulted collection of reviews can be filtered using filter parameters `score`, `legacyReviewId`, `typeId`, `reviewerId`, `scoreCardId`, `status` (all filter parameters are optional and combined by the logical operation `AND`).
903903
904904
**Authorization:** Review is accessible by roles `admin` and `copilot`.
905905
tags:
@@ -912,6 +912,7 @@ paths:
912912
- $ref: '#/parameters/sortBy'
913913
# filter parameters
914914
- $ref: '#/parameters/filterReviewScore'
915+
- $ref: '#/parameters/filterReviewLegacyReviewId'
915916
- $ref: '#/parameters/filterReviewTypeId'
916917
- $ref: '#/parameters/filterReviewReviewerId'
917918
- $ref: '#/parameters/filterReviewScoreCardId'
@@ -928,6 +929,7 @@ paths:
928929
example:
929930
- id: 'a12a4180-65aa-42ec-a945-5fd21dec0503'
930931
score: 95.5
932+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c1'
931933
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0503'
932934
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503'
933935
scoreCardId: 123456789
@@ -939,6 +941,7 @@ paths:
939941
updatedBy: 'admin'
940942
- id: 'a23c4180-65aa-42ec-a945-5fd21dec0503'
941943
score: 73.2
944+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c4'
942945
typeId: 'c56a4180-65aa-42ec-a945-5fd21dec0503'
943946
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503'
944947
scoreCardId: 123456789
@@ -985,7 +988,7 @@ paths:
985988
description: |
986989
Get response status and headers information for the endpoint. Link headers are sent back and they have rel set to prev, next, first, last and contain the relevant URL.
987990
988-
Requested reviews can be filtered using filter parameters `score`, `typeId`, `reviewerId`, `scoreCardId`, `status` (all filter parameters are optional and combined by the logical operation `AND`).
991+
Requested reviews can be filtered using filter parameters `score`, `legacyReviewId`, `typeId`, `reviewerId`, `scoreCardId`, `status` (all filter parameters are optional and combined by the logical operation `AND`).
989992
990993
**Authorization:** Review is accessible by roles `admin` and `copilot`.
991994
tags:
@@ -996,6 +999,7 @@ paths:
996999
- $ref: '#/parameters/perPage'
9971000
# filter parameters
9981001
- $ref: '#/parameters/filterReviewScore'
1002+
- $ref: '#/parameters/filterReviewLegacyReviewId'
9991003
- $ref: '#/parameters/filterReviewTypeId'
10001004
- $ref: '#/parameters/filterReviewReviewerId'
10011005
- $ref: '#/parameters/filterReviewScoreCardId'
@@ -1718,6 +1722,13 @@ parameters:
17181722
type: number
17191723
format: double
17201724

1725+
filterReviewLegacyReviewId:
1726+
in: query
1727+
name: legacyReviewId
1728+
description: The legacy review id filter for reviews.
1729+
required: false
1730+
type: string
1731+
17211732
filterReviewTypeId:
17221733
in: query
17231734
name: typeId
@@ -1963,6 +1974,7 @@ definitions:
19631974
required:
19641975
- id
19651976
- score
1977+
- legacyReviewId
19661978
- typeId
19671979
- reviewerId
19681980
- scoreCardId
@@ -1988,6 +2000,10 @@ definitions:
19882000
format: double
19892001
description: The review score.
19902002
example: 95.5
2003+
legacyReviewId:
2004+
type: string
2005+
description: The legacy review id.
2006+
example: 'a12bc180-65ab-42ec-a945-5fd21dec1567'
19912007
typeId:
19922008
type: string
19932009
description: The review type id.
@@ -2018,6 +2034,7 @@ definitions:
20182034
type: object
20192035
required:
20202036
- score
2037+
- legacyReviewId
20212038
- typeId
20222039
- reviewerId
20232040
- scoreCardId

scripts/data/Reviews.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{
33
"id": "d24d4180-65aa-42ec-a945-5fd21dec0501",
44
"score": 95.5,
5+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c1",
56
"typeId": "c56a4180-65aa-42ec-a945-5fd21dec0503",
67
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
78
"scoreCardId": 123456789,
@@ -14,6 +15,7 @@
1415
{
1516
"id": "d24d4180-65aa-42ec-a945-5fd21dec0502",
1617
"score": 92.0,
18+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c2",
1719
"typeId": "c56a4180-65aa-42ec-a945-5fd21dec0501",
1820
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
1921
"scoreCardId": 123456789,
@@ -26,6 +28,7 @@
2628
{
2729
"id": "d24d4180-65aa-42ec-a945-5fd21dec0503",
2830
"score": 80.83,
31+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c3",
2932
"typeId": "c56a4180-65aa-42ec-a945-5fd21dec0503",
3033
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
3134
"scoreCardId": 123456789,
@@ -38,6 +41,7 @@
3841
{
3942
"id": "d24d4180-65aa-42ec-a945-5fd21dec0504",
4043
"score": 85.62,
44+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c4",
4145
"typeId": "c56a4180-65aa-42ec-a945-5fd21dec0503",
4246
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0502",
4347
"scoreCardId": 123456789,
@@ -50,6 +54,7 @@
5054
{
5155
"id": "d24d4180-65aa-42ec-a945-5fd21dec0505",
5256
"score": 100,
57+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c5",
5358
"typeId": "f28b2725-ef90-4495-af59-ceb2bd98fc10",
5459
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
5560
"scoreCardId": 123456789,
@@ -62,6 +67,7 @@
6267
{
6368
"id": "d24d4180-65aa-42ec-a945-5fd21dec0506",
6469
"score": 65.0,
70+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c6",
6571
"typeId": "c56a4180-65aa-42ec-a945-5fd21dec0503",
6672
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
6773
"scoreCardId": 123456789,
@@ -74,6 +80,7 @@
7480
{
7581
"id": "d24d4180-65aa-42ec-a945-5fd21dec0507",
7682
"score": 68.0,
83+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c7",
7784
"typeId": "c56a4180-65aa-42ec-a945-5fd21dec0503",
7885
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0502",
7986
"scoreCardId": 123456789,
@@ -86,6 +93,7 @@
8693
{
8794
"id": "d24d4180-65aa-42ec-a945-5fd21dec0508",
8895
"score": 100,
96+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c8",
8997
"typeId": "f28b2725-ef90-4495-af59-ceb2bd98fc10",
9098
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
9199
"scoreCardId": 123456789,
@@ -98,6 +106,7 @@
98106
{
99107
"id": "d24d4180-65aa-42ec-a945-5fd21dec0509",
100108
"score": 92.5,
109+
"legacyReviewId": "6b4faff1-7685-4866-a2e3-24afabf5c2c9",
101110
"typeId": "c56a4180-65aa-42ec-a945-5fd21dec0503",
102111
"reviewerId": "c23a4180-65aa-42ec-a945-5fd21dec0503",
103112
"scoreCardId": 123456789,

src/services/ReviewService.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ function* listReviews(query) {
9494

9595
const listReviewsQuerySchema = {
9696
score: joi.score(),
97+
legacyReviewId: joi.string().uuid(),
9798
typeId: joi.string().uuid(),
9899
reviewerId: joi.alternatives().try(joi.id(), joi.string().uuid()),
99100
scoreCardId: joi.id(),
@@ -181,6 +182,9 @@ createReview.schema = {
181182
.object()
182183
.keys({
183184
score: joi.score().required(),
185+
legacyReviewId: joi
186+
.string()
187+
.uuid(),
184188
typeId: joi
185189
.string()
186190
.uuid()
@@ -231,11 +235,12 @@ function* _updateReview(authUser, reviewId, entity) {
231235
Key: {
232236
id: reviewId
233237
},
234-
UpdateExpression: `set score = :s, scoreCardId = :sc, submissionId = :su,
235-
typeId = :t, reviewerId = :r, #st = :st,
238+
UpdateExpression: `set score = :s, legacyReviewId = :lr, scoreCardId = :sc,
239+
submissionId = :su, typeId = :t, reviewerId = :r, #st = :st,
236240
updated = :ua, updatedBy = :ub`,
237241
ExpressionAttributeValues: {
238242
':s': entity.score || exist.score,
243+
':lr': entity.legacyReviewId || exist.legacyReviewId,
239244
':sc': entity.scoreCardId || exist.scoreCardId,
240245
':su': entity.submissionId || exist.submissionId,
241246
':t': entity.typeId || exist.typeId,
@@ -312,6 +317,9 @@ updateReview.schema = {
312317
.object()
313318
.keys({
314319
score: joi.score().required(),
320+
legacyReviewId: joi
321+
.string()
322+
.uuid(),
315323
typeId: joi
316324
.string()
317325
.uuid()
@@ -350,6 +358,7 @@ patchReview.schema = {
350358
.required(),
351359
entity: joi.object().keys({
352360
score: joi.score(),
361+
legacyReviewId: joi.string().uuid(),
353362
typeId: joi.string().uuid(),
354363
reviewerId: joi.alternatives().try(joi.id(), joi.string().uuid()),
355364
scoreCardId: joi.id(),

test/common/testData.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ const testReview = {
334334
Item: {
335335
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
336336
score: 92,
337+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c1',
337338
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
338339
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
339340
scoreCardId: 123456789,
@@ -350,6 +351,7 @@ const testReviewPatch = {
350351
Item: {
351352
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
352353
score: 90,
354+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c1',
353355
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
354356
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
355357
scoreCardId: 123456789,
@@ -373,6 +375,7 @@ const testReviewES = {
373375
_source: {
374376
id: 'd24d4180-65aa-42ec-a945-5fd21dec0502',
375377
score: 92,
378+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c3',
376379
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
377380
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
378381
scoreCardId: 123456789,
@@ -397,6 +400,7 @@ const testReviewsES = {
397400
_score: 0,
398401
_source:
399402
{ score: 95.5,
403+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c1',
400404
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
401405
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0501',
402406
status: 'queued',
@@ -413,6 +417,7 @@ const testReviewsES = {
413417
_score: 0,
414418
_source:
415419
{ score: 65,
420+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c2',
416421
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
417422
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0504',
418423
updatedBy: 'admin',
@@ -429,6 +434,7 @@ const testReviewsES = {
429434
_score: 0,
430435
_source:
431436
{ score: 92,
437+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c3',
432438
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
433439
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0502',
434440
updatedBy: 'admin',
@@ -445,6 +451,7 @@ const testReviewsES = {
445451
_score: 0,
446452
_source:
447453
{ score: 80.83,
454+
legacyReviewId: '6b4faff1-7685-4866-a2e3-24afabf5c2c4',
448455
reviewerId: 'c23a4180-65aa-42ec-a945-5fd21dec0503',
449456
submissionId: 'a12a4180-65aa-42ec-a945-5fd21dec0503',
450457
updatedBy: 'admin',

test/e2e/ReviewService.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ describe('Review Service tests', () => {
132132
res.body.id.should.not.be.eql(null)
133133
reviewId = res.body.id
134134
res.body.score.should.be.eql(testReview.Item.score)
135+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
135136
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
136137
res.body.submissionId.should.be.eql(submissionId)
137138
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
@@ -152,6 +153,7 @@ describe('Review Service tests', () => {
152153
res.body.id.should.not.be.eql(null)
153154
reviewId = res.body.id
154155
res.body.score.should.be.eql(testReview.Item.score)
156+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
155157
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
156158
res.body.submissionId.should.be.eql(submissionId)
157159
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
@@ -220,6 +222,7 @@ describe('Review Service tests', () => {
220222
res.body.should.have.all.keys(Object.keys(testReview.Item))
221223
res.body.id.should.be.eql(testReview.Item.id)
222224
res.body.score.should.be.eql(testReview.Item.score)
225+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
223226
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
224227
res.body.submissionId.should.be.eql(testReview.Item.submissionId)
225228
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
@@ -316,6 +319,7 @@ describe('Review Service tests', () => {
316319
res.body.should.have.all.keys(Object.keys(testReview.Item))
317320
res.body.id.should.be.eql(reviewId)
318321
res.body.score.should.be.eql(testReview.Item.score)
322+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
319323
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
320324
res.body.submissionId.should.be.eql(submissionId)
321325
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)

test/unit/ReviewService.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ describe('Review Service tests', () => {
7777
res.body.should.have.all.keys(Object.keys(testReview.Item))
7878
res.body.id.should.be.eql(testReview.Item.id)
7979
res.body.score.should.be.eql(testReview.Item.score)
80+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
8081
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
8182
res.body.submissionId.should.be.eql(testReview.Item.submissionId)
8283
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
@@ -173,6 +174,7 @@ describe('Review Service tests', () => {
173174
res.body.should.have.all.keys(Object.keys(testReview.Item))
174175
res.body.id.should.not.be.eql(null)
175176
res.body.score.should.be.eql(testReview.Item.score)
177+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
176178
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
177179
res.body.submissionId.should.be.eql(testReview.Item.submissionId)
178180
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
@@ -192,6 +194,7 @@ describe('Review Service tests', () => {
192194
res.body.should.have.all.keys(Object.keys(testReview.Item))
193195
res.body.id.should.not.be.eql(null)
194196
res.body.score.should.be.eql(testReview.Item.score)
197+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
195198
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
196199
res.body.submissionId.should.be.eql(testReview.Item.submissionId)
197200
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
@@ -289,6 +292,7 @@ describe('Review Service tests', () => {
289292
res.body.should.have.all.keys(Object.keys(testReview.Item))
290293
res.body.id.should.be.eql(testReview.Item.id)
291294
res.body.score.should.be.eql(testReview.Item.score)
295+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
292296
res.body.reviewerId.should.be.eql(testReview.Item.reviewerId)
293297
res.body.submissionId.should.be.eql(testReview.Item.submissionId)
294298
res.body.scoreCardId.should.be.eql(testReview.Item.scoreCardId)
@@ -361,6 +365,7 @@ describe('Review Service tests', () => {
361365
res.body.should.have.all.keys(Object.keys(testReviewPatch.Item))
362366
res.body.id.should.be.eql(testReviewPatch.Item.id)
363367
res.body.score.should.be.eql(testReviewPatch.Item.score)
368+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
364369
res.body.reviewerId.should.be.eql(testReviewPatch.Item.reviewerId)
365370
res.body.submissionId.should.be.eql(testReviewPatch.Item.submissionId)
366371
res.body.scoreCardId.should.be.eql(testReviewPatch.Item.scoreCardId)
@@ -379,6 +384,7 @@ describe('Review Service tests', () => {
379384
res.body.should.have.all.keys(Object.keys(testReviewPatch.Item))
380385
res.body.id.should.be.eql(testReviewPatch.Item.id)
381386
res.body.score.should.be.eql(testReviewPatch.Item.score)
387+
res.body.legacyReviewId.should.be.eql(testReview.Item.legacyReviewId)
382388
res.body.reviewerId.should.be.eql(testReviewPatch.Item.reviewerId)
383389
res.body.submissionId.should.be.eql(testReviewPatch.Item.submissionId)
384390
res.body.scoreCardId.should.be.eql(testReviewPatch.Item.scoreCardId)

0 commit comments

Comments
 (0)