@@ -28,7 +28,7 @@ async function getLeaderboard (challengeId, memberId) {
28
28
* @returns {Number } the test passed number
29
29
*/
30
30
function getTestsPassed ( metadata ) {
31
- const tests = metadata . tests || { total : 0 , pending : 0 , failed : 0 }
31
+ const tests = metadata . tests || { total : 0 , pending : 0 , failed : 0 }
32
32
33
33
let testsPassed = tests . total - tests . pending - tests . failed
34
34
@@ -42,35 +42,35 @@ function getTestsPassed (metadata) {
42
42
/**
43
43
* Calculate test passed number and total test cases
44
44
*
45
- * @param {Object } reviewSummation the review summation
45
+ * @param {Object } review the review
46
46
* @return {Object } testsPassed and totalTestCases
47
47
*/
48
- function calculateResult ( reviewSummation ) {
48
+ function calculateResult ( review ) {
49
49
let testsPassed = 0
50
50
let totalTestCases = 0
51
51
52
- if ( reviewSummation . metadata ) {
53
- testsPassed = getTestsPassed ( reviewSummation . metadata )
54
- totalTestCases = _ . get ( reviewSummation , 'metadata.tests.total' , 0 )
52
+ if ( review . metadata ) {
53
+ testsPassed = getTestsPassed ( review . metadata )
54
+ totalTestCases = _ . get ( review , 'metadata.tests.total' , 0 )
55
55
}
56
56
return { testsPassed, totalTestCases }
57
57
}
58
58
59
59
/**
60
- * Create leaderboard using review summation data
60
+ * Create leaderboard using review data
61
61
*
62
62
* @param {String } challengeId the challenge id
63
63
* @param {String } memberId the member id
64
- * @param {Object } reviewSummation the review summation data
64
+ * @param {Object } review the review data
65
65
* @returns {Object } the created leaderboard
66
66
*/
67
- async function createLeaderboard ( challengeId , memberId , reviewSummation ) {
67
+ async function createLeaderboard ( challengeId , memberId , review ) {
68
68
const existRecords = await getLeaderboard ( challengeId , memberId )
69
69
if ( existRecords . length > 0 ) {
70
70
throw new errors . ConflictError ( `Leaderboard record with challenge # ${ challengeId } and member # ${ memberId } already exists.` )
71
71
}
72
72
73
- const { testsPassed, totalTestCases } = calculateResult ( reviewSummation )
73
+ const { testsPassed, totalTestCases } = calculateResult ( review )
74
74
75
75
const challengeDetailRes = await helper . reqToAPI (
76
76
`${ config . CHALLENGE_API_URL } ?filter=id=${ challengeId } ` )
@@ -94,12 +94,12 @@ async function createLeaderboard (challengeId, memberId, reviewSummation) {
94
94
95
95
// Record to be written into MongoDB
96
96
const record = {
97
- reviewSummationId : reviewSummation . id ,
98
- submissionId : reviewSummation . submissionId ,
97
+ reviewId : review . id ,
98
+ submissionId : review . submissionId ,
99
99
memberId,
100
100
challengeId,
101
101
handle : member . handle ,
102
- aggregateScore : reviewSummation . aggregateScore ,
102
+ aggregateScore : review . score , // For TCO scenario, we will only have 1 review - per member and per challenge
103
103
testsPassed,
104
104
totalTestCases,
105
105
groupIds : _ . map ( groupIds , e => String ( e ) )
@@ -111,40 +111,40 @@ async function createLeaderboard (challengeId, memberId, reviewSummation) {
111
111
createLeaderboard . schema = {
112
112
challengeId : joi . string ( ) . required ( ) ,
113
113
memberId : joi . string ( ) . required ( ) ,
114
- reviewSummation : joi . object ( ) . keys ( {
114
+ review : joi . object ( ) . keys ( {
115
115
id : joi . string ( ) . required ( ) ,
116
116
submissionId : joi . string ( ) . required ( ) ,
117
- aggregateScore : joi . number ( ) . required ( )
117
+ score : joi . number ( ) . required ( )
118
118
} ) . unknown ( true ) . required ( )
119
119
}
120
120
121
121
/**
122
- * Update leaderboard detail using review summation data
122
+ * Update leaderboard detail using review data
123
123
*
124
124
* @param {String } challengeId the challenge id
125
125
* @param {String } memberId the member id
126
- * @param {Object } reviewSummation the review summation data
126
+ * @param {Object } review the review data
127
127
* @returns the updated leaderboard detail
128
128
*/
129
- async function updateLeaderboard ( challengeId , memberId , reviewSummation ) {
129
+ async function updateLeaderboard ( challengeId , memberId , review ) {
130
130
const existRecords = await getLeaderboard ( challengeId , memberId )
131
131
if ( existRecords . length === 0 ) {
132
132
throw new errors . NotFoundError ( `Leaderboard record with challenge # ${ challengeId } and member # ${ memberId } doesn't exist` )
133
133
}
134
134
135
135
let scoreLevel = 'na'
136
136
137
- const { testsPassed, totalTestCases } = calculateResult ( reviewSummation )
137
+ const { testsPassed, totalTestCases } = calculateResult ( review )
138
138
139
- if ( existRecords [ 0 ] . aggregateScore > reviewSummation . aggregateScore ) {
140
- scoreLevel = 'down' ;
141
- } else if ( existRecords [ 0 ] . aggregateScore < reviewSummation . aggregateScore ) {
142
- scoreLevel = 'up' ;
139
+ if ( existRecords [ 0 ] . aggregateScore > review . score ) {
140
+ scoreLevel = 'down'
141
+ } else if ( existRecords [ 0 ] . aggregateScore < review . score ) {
142
+ scoreLevel = 'up'
143
143
}
144
144
145
145
_ . assignIn ( existRecords [ 0 ] , {
146
- aggregateScore : reviewSummation . aggregateScore ,
147
- reviewSummationId : reviewSummation . id ,
146
+ aggregateScore : review . score ,
147
+ reviewId : review . id ,
148
148
testsPassed,
149
149
totalTestCases,
150
150
scoreLevel
@@ -156,9 +156,9 @@ async function updateLeaderboard (challengeId, memberId, reviewSummation) {
156
156
updateLeaderboard . schema = {
157
157
challengeId : joi . string ( ) . required ( ) ,
158
158
memberId : joi . string ( ) . required ( ) ,
159
- reviewSummation : joi . object ( ) . keys ( {
159
+ review : joi . object ( ) . keys ( {
160
160
id : joi . string ( ) . required ( ) ,
161
- aggregateScore : joi . number ( ) . required ( )
161
+ score : joi . number ( ) . required ( )
162
162
} ) . unknown ( true ) . required ( )
163
163
}
164
164
@@ -222,20 +222,20 @@ searchLeaderboards.schema = {
222
222
}
223
223
224
224
/**
225
- * Delete leaderboard by review summation id.
225
+ * Delete leaderboard by review id.
226
226
*
227
- * @param {String } reviewSummationId the review summation id
227
+ * @param {String } reviewId the review id
228
228
*/
229
- async function deleteLeaderboard ( reviewSummationId ) {
230
- const entity = await Leaderboard . findOne ( { reviewSummationId } )
229
+ async function deleteLeaderboard ( reviewId ) {
230
+ const entity = await Leaderboard . findOne ( { reviewId } )
231
231
if ( ! entity ) {
232
- throw new errors . NotFoundError ( `Leaderboard record with reviewSummation ID : ${ reviewSummationId } doesn't exist` )
232
+ throw new errors . NotFoundError ( `Leaderboard record with review id : ${ reviewId } doesn't exist` )
233
233
}
234
234
await entity . remove ( )
235
235
}
236
236
237
237
deleteLeaderboard . schema = {
238
- reviewSummationId : joi . string ( ) . required ( )
238
+ reviewId : joi . string ( ) . required ( )
239
239
}
240
240
241
241
module . exports = {
0 commit comments