diff --git a/app/services/challenge.service.js b/app/services/challenge.service.js index eba8c1a3b..6ca22a5c4 100644 --- a/app/services/challenge.service.js +++ b/app/services/challenge.service.js @@ -189,7 +189,8 @@ return submission.type === CONSTANTS.SUBMISSION_TYPE_CONTEST && submission.placement; }), 'placement').placement; } - if (challenge.track === 'DEVELOP' && challenge.subTrack === 'FIRST_2_FINISH') { + if (challenge.track === 'DEVELOP' && challenge.subTrack === 'FIRST_2_FINISH' + && challenge.userDetails.submissions && challenge.userDetails.submissions.length > 0) { challenge.highestPlacement = _.min(challenge.userDetails.submissions.filter(function(submission) { return submission.type === CONSTANTS.SUBMISSION_TYPE_CONTEST && submission.status === CONSTANTS.STATUS_ACTIVE && submission.placement; diff --git a/app/services/challenge.service.spec.js b/app/services/challenge.service.spec.js index 142dd8786..058fcd8cf 100644 --- a/app/services/challenge.service.spec.js +++ b/app/services/challenge.service.spec.js @@ -326,7 +326,7 @@ describe('Challenge Service', function() { expect(challenge.userHasSubmitterRole).to.exist.to.true; }); - it('processPastChallenges should process a not completed DEVELOP/FIRST_2_FINISH challenge ', function() { + it('processPastChallenges should process a not completed (empty submissions) DEVELOP/FIRST_2_FINISH challenge ', function() { var challenges = [ { id: 30041345, @@ -348,6 +348,28 @@ describe('Challenge Service', function() { expect(challenge.userHasSubmitterRole).to.exist.to.true; }); + it('processPastChallenges should process a not completed(null submissions) DEVELOP/FIRST_2_FINISH challenge ', function() { + var challenges = [ + { + id: 30041345, + name: 'Mock Challenge 1', + track: 'DEVELOP', + subTrack: 'FIRST_2_FINISH', + userDetails: { + hasUserSubmittedForReview: false, + roles: ['Submitter'], + submissions: null + } + } + ]; + ChallengeService.processPastChallenges(challenges); + var challenge = challenges[0]; + expect(challenge.highestPlacement).not.to.exist; + expect(challenge.wonFirst).to.exist.to.false; + expect(challenge.userStatus).to.exist.to.equal('NOT_FINISHED'); + expect(challenge.userHasSubmitterRole).to.exist.to.true; + }); + it('processPastChallenges should process a DEVELOP/FIRST_2_FINISH challenge for a non submitter user ', function() { var challenges = [ {