示例#1
0
        public async Task GetAchievementsInfoByUserAsync_ValidUserId(Guid userId)
        {
            //Arrange
            var userAchievement   = UserAchievementDumbData.GetRandomEntity();
            var cancellationToken = new CancellationToken();

            var countAchievementsByUser  = RandomHelper.GetRandomNumber();
            var countAchievementsByMonth = RandomHelper.GetRandomNumber();
            var expectedValue            = new AchievementsInfoModel
            {
                TotalAchievements            = countAchievementsByUser,
                TotalXP                      = userAchievement.User.XP,
                TotalAchievementsByThisMonth = countAchievementsByMonth
            };

            _userAchievementRepository.Setup(x => x.GetCountAchievementsByUserAsync(It.IsAny <Guid>(), cancellationToken)).ReturnsAsync(countAchievementsByUser);
            _userAchievementRepository.Setup(x => x.GetCountAchievementsByThisMonthAsync(It.IsAny <Guid>(), cancellationToken)).ReturnsAsync(countAchievementsByMonth);
            _userRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(userAchievement.User));

            // Act
            var response = await _userAchievementService.GetAchievementsInfoByUserAsync(userId, cancellationToken);

            // Assert
            _userAchievementRepository.Verify(x => x.GetCountAchievementsByUserAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _userAchievementRepository.Verify(x => x.GetCountAchievementsByThisMonthAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _userRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);

            response.Should().BeEquivalentTo(expectedValue);
        }
        public async Task <IActionResult> GetAchievementsInfo(CancellationToken cancellationToken)
        {
            var achievementsInfo = await _userAchievementService.GetAchievementsInfoByUserAsync(UserId, cancellationToken);

            return(Ok(achievementsInfo));
        }