Esempio n. 1
0
        public void Add_Should_Add_The_Score_And_Return_Top_5_Of_The_Scores()
        {
            // Arrange
            var fakeScore = new UserScore
            {
                Id     = 1,
                UserId = 1,
                Score  = 100
            };
            var fakeScoreViewModel = new UserScoreViewModel
            {
                Id     = 1,
                UserId = 0,
                Score  = 100
            };

            _mockRepo.Setup(repo => repo.Add(fakeScore, 1));
            _mockRepo.Setup(repo => repo.IncreaseScore(fakeScore.Score, fakeScore.UserId));
            _mockRepo.Setup(repo => repo.GetTopRanks(It.IsAny <UserScore>())).Returns(_fakeRankList.Where(x => x.Email != "You").ToList());


            // Act
            var methodResult = _mockController.Add(fakeScoreViewModel);

            // Assert
            var testResult = methodResult.Result as OkObjectResult;

            Assert.Equal(JsonConvert.SerializeObject(_fakeRankList), JsonConvert.SerializeObject(testResult.Value));
        }
        public ActionResult <List <RankResultViewModel> > Add([FromBody] UserScoreViewModel model)
        {
            var result = new List <RankResultViewModel>();

            if (model.IsFeedback)
            {
                model.UserId = _userRepository.GetUserInformationByEmail(model.Email).Id;
            }
            else
            {
                model.UserId = GetUser().Id;
            }


            if (model.UserId != 0)
            {
                _scoreRepository.Add(new UserScore
                {
                    UserId            = model.UserId,
                    GuestCode         = model.GuestCode,
                    GameName          = model.GameName,
                    BookId            = model.BookId,
                    ChapterId         = model.ChapterId,
                    AddedDate         = model.AddedDate,
                    Score             = model.Score,
                    FeedbackUniqueKey = model.FeedbackUniqueKey,
                    BaseLanguageId    = model.BaseLanguageId,
                    TargetLanguageId  = model.TargetLanguageId
                }, model.UserId);

                _scoreRepository.IncreaseScore(model.Score, model.UserId);
            }

            result.AddRange(_scoreRepository.GetTopRanks(new UserScore
            {
                GameName         = model.GameName,
                BookId           = model.BookId,
                ChapterId        = model.ChapterId,
                Count            = model.Count,
                BaseLanguageId   = model.BaseLanguageId,
                TargetLanguageId = model.TargetLanguageId
            }).Select(x => new RankResultViewModel
            {
                Score       = x.Score,
                DisplayName = x.DisplayName,
                Email       = x.Email
            }));
            return(Ok(result.Take(5).ToList()));
        }
        public ActionResult <List <RankResultViewModel> > GetTopScores([FromBody] UserScoreViewModel model)
        {
            var result = new List <RankResultViewModel>();

            result.AddRange(_scoreRepository.GetTopRanks(new UserScore
            {
                GameName         = model.GameName,
                BookId           = model.BookId,
                ChapterId        = model.ChapterId,
                Count            = model.Count,
                BaseLanguageId   = model.BaseLanguageId,
                TargetLanguageId = model.TargetLanguageId
            }).Select(x => new RankResultViewModel
            {
                Score       = x.Score,
                DisplayName = x.DisplayName,
                Email       = x.Email
            }));
            return(Ok(result.ToList()));
        }