@@ -8,18 +8,41 @@ const logger = require('../common/logger')
8
8
const helper = require ( '../common/helper' )
9
9
const { Leaderboard } = require ( '../models' )
10
10
11
+ /**
12
+ * Returns the tests passed using the metadata information
13
+ * @param {object } metadata the object from which to retrieve the tests passed
14
+ */
15
+ function getTestsPassed ( metadata = { } ) {
16
+ const tests = metadata . tests || { }
17
+
18
+ let testsPassed = tests . total - tests . pending - tests . failed
19
+
20
+ if ( ! testsPassed ) {
21
+ testsPassed = 0
22
+ }
23
+
24
+ return testsPassed
25
+ }
26
+
11
27
/**
12
28
* Handle create / update topic messages from Kafka queue
13
29
* @param {Object } message the Kafka message in JSON format
14
30
*/
15
31
const upsert = async ( message ) => {
16
- // const existRecord = await Leaderboard.findOne({$and: [{challengeId: }]})
17
-
18
32
const submission = await helper . reqToAPI ( `${ config . SUBMISSION_API_URL } /${ message . payload . submissionId } ` )
19
33
20
- // const existRecord = await Leaderboard.findOne({ reviewSummationId: message.payload.id })
21
34
const existRecord = await Leaderboard . findOne ( { $and : [ { challengeId : submission . body . challengeId } , { memberId : submission . body . memberId } ] } )
22
35
36
+ const reviewSummation = await helper . reqToAPI ( `${ config . REVIEW_SUMMATION_API_URL } /${ message . payload . id } ` )
37
+
38
+ let testsPassed
39
+
40
+ if ( reviewSummation . metadata ) {
41
+ testsPassed = getTestsPassed ( reviewSummation . metadata )
42
+ } else {
43
+ testsPassed = 0
44
+ }
45
+
23
46
if ( existRecord ) {
24
47
logger . debug ( `Record with ID # ${ message . payload . id } exists in database. Updating the score` )
25
48
await Leaderboard . updateOne (
@@ -29,13 +52,14 @@ const upsert = async (message) => {
29
52
{
30
53
$set : {
31
54
aggregateScore : message . payload . aggregateScore ,
32
- reviewSummationId : message . payload . id
55
+ reviewSummationId : message . payload . id ,
56
+ testsPassed
33
57
}
34
58
}
35
59
)
36
60
} else {
37
61
logger . debug ( `Record with ID # ${ message . payload . id } does not exists in database. Creating the record` )
38
- // const submission = await helper.reqToAPI(`${config.SUBMISSION_API_URL}/${message.payload.submissionId}`)
62
+
39
63
const challengeDetail = await helper . reqToAPI ( `${ config . CHALLENGE_API_URL } ?filter=id=${ submission . body . challengeId } ` )
40
64
41
65
if ( ! helper . isGroupIdValid ( challengeDetail . body . result . content [ 0 ] . groupIds ) ) {
@@ -53,7 +77,8 @@ const upsert = async (message) => {
53
77
memberId : submission . body . memberId ,
54
78
challengeId : submission . body . challengeId ,
55
79
handle : memberDetail . body . result . content [ 0 ] . handle ,
56
- aggregateScore : message . payload . aggregateScore
80
+ aggregateScore : message . payload . aggregateScore ,
81
+ testsPassed
57
82
}
58
83
59
84
await Leaderboard . create ( record )
0 commit comments