Beispiel #1
0
        private async Task <IDictionary <string, int> > ContestRanking(IEnumerable <string> userIds)
        {
            var userRanking = new Dictionary <string, int>();

            foreach (var userId in userIds)
            {
                var contestScoreQuery = ContestScoreQuery.Create(userId, ContestId);
                var contestScore      = await _contestScoreQueryHandler.HandleAsync(contestScoreQuery);

                userRanking.Add(userId, contestScore.Score);
            }

            int position = 0;

            userRanking = userRanking
                          .OrderByDescending(k => k.Value)
                          .Select(v =>
            {
                ++position;
                return(v.Key, position);
            })
                          .ToDictionary(v => v.Key, v => v.position);

            return(userRanking);
        }
Beispiel #2
0
        public void QueryContestWithNoTasks_ReturnZeroPoints()
        {
            var givenUserId    = "user-id";
            var givenContestId = GivenContest.Id;

            var query  = ContestScoreQuery.Create(givenUserId, givenContestId);
            var result = Sut.HandleAsync(query).Result;

            result.Score.Should().Be(0);
        }
Beispiel #3
0
        public void ExecuteHandle_UserIdAndContestIdAreTheSameInQueryAndResult()
        {
            var givenUserId    = "user-id";
            var givenContestId = GivenContest.Id;

            var query  = ContestScoreQuery.Create(givenUserId, givenContestId);
            var result = Sut.HandleAsync(query).Result;

            result.UserId.Should().Be(givenUserId);
            result.ContestId.Should().Be(givenContestId);
        }