예제 #1
0
        public async Task ChangeUserAchievementsAsync_ValidAssignAchievementsToUserModel(AssignAchievementsToUserModel model)
        {
            //Arrange
            var user              = UserDumbData.GetRandomEntity();
            var userAchievements  = UserAchievementDumbData.GetRandomEntities(5, user);
            var returnpagingInfo  = ReturnPagingInfoDumbData.GetForModel(new PagingInfo(), userAchievements);
            var cancellationToken = new CancellationToken();

            _userRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).ReturnsAsync(user);
            _userAchievementRepository.Setup(x => x.GetCountAchievementsByUserAsync(It.IsAny <Guid>(), cancellationToken)).ReturnsAsync(RandomHelper.GetRandomNumber());
            _userAchievementRepository.Setup(x => x.GetAllAchievementsByUserAsync(It.IsAny <PagingInfo>(), It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(returnpagingInfo));
            _userAchievementRepository.Setup(x => x.AddAsync(It.IsAny <UserAchievement>(), cancellationToken)).Returns(Task.CompletedTask);
            _userAchievementRepository.Setup(x => x.Delete(It.IsAny <UserAchievement>()));
            _achievementRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken))
            .Returns(Task.FromResult(AchievementDumbData.GetRandomEntity()));
            _unitOfWork.Setup(x => x.SaveChangesAsync(cancellationToken)).Returns(Task.CompletedTask);

            // Act
            await _userAchievementService.ChangeUserAchievementsAsync(model, user.Id, cancellationToken);

            // Assert
            _userRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _userAchievementRepository.Verify(x => x.GetCountAchievementsByUserAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _userAchievementRepository.Verify(x => x.GetAllAchievementsByUserAsync(It.IsAny <PagingInfo>(), It.IsAny <Guid>(), cancellationToken), Times.Once);
            _userAchievementRepository.Verify(x => x.AddAsync(It.IsAny <UserAchievement>(), cancellationToken), Times.Once);
            _userAchievementRepository.Verify(x => x.Delete(It.IsAny <UserAchievement>()), Times.Once);
            _achievementRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _unitOfWork.Verify(x => x.SaveChangesAsync(cancellationToken), Times.Once);
        }
예제 #2
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 UpdateAchievementAsync_UpdateAchievementModel_ReturnsReadAchievementModel(UpdateAchievementModel model)
        {
            //Arrange
            var achievement       = AchievementDumbData.GetEntity(model);
            var user              = UserDumbData.GetRandomEntity();
            var userAchievements  = UserAchievementDumbData.GetRandomEntities(5, user, achievement);
            var returnPagingInfo  = ReturnPagingInfoDumbData.GetForModel(new PagingInfo(), userAchievements);
            var expectedValue     = _mapper.Map <ReadAchievementModel>(achievement);
            var cancellationToken = new CancellationToken();

            _achievementRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(achievement));
            _userAchievementRepository.Setup(x => x.GetAllUsersByAchievementAsync(It.IsAny <PagingInfo>(), It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(returnPagingInfo));
            _userRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(user));
            _achievementRepository.Setup(x => x.Update(It.IsAny <Achievement>()));
            _fileService.Setup(x => x.AddOrUpdateFileByIdAsync(It.IsAny <IFormFile>(), It.IsAny <Guid?>(), cancellationToken)).Returns(Task.FromResult(expectedValue.IconId));
            _unitOfWork.Setup(x => x.SaveChangesAsync(cancellationToken)).Returns(Task.CompletedTask);

            // Act
            var response = await _achievementService.UpdateAchievementAsync(model, achievement.Id, cancellationToken);

            // Assert
            _achievementRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _achievementRepository.Verify(x => x.Update(It.IsAny <Achievement>()), Times.Once);
            _fileService.Verify(x => x.AddOrUpdateFileByIdAsync(It.IsAny <IFormFile>(), It.IsAny <Guid?>(), cancellationToken), Times.Once);
            _unitOfWork.Verify(x => x.SaveChangesAsync(cancellationToken), Times.Once);
            response.Should().BeEquivalentTo(expectedValue);
        }
예제 #4
0
        public async Task GetUserAchievementByIdAsync()
        {
            //Arrange
            var userAchievement   = UserAchievementDumbData.GetRandomEntity();
            var expectedValue     = _mapper.Map <ReadUserAchievementModel>(userAchievement);
            var cancellationToken = new CancellationToken();

            _userAchievementRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).ReturnsAsync(userAchievement);

            // Act
            var response = await _userAchievementService.GetUserAchievementByIdAsync(userAchievement.Id, cancellationToken);

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

            response.Should().BeEquivalentTo(expectedValue);
        }
예제 #5
0
        public async Task GetAllAchievementsByUserAsync(PagingInfo pagingInfo)
        {
            //Arrange
            var user              = UserDumbData.GetRandomEntity();
            var returnPage        = ReturnPagingInfoDumbData.GetForModel(pagingInfo, UserAchievementDumbData.GetRandomEntities(5, user));
            var expectedValue     = ReturnPagingInfoDumbData.GetWithModels <ReadUserAchievementModel, UserAchievement>(returnPage, _mapper);
            var cancellationToken = new CancellationToken();

            _userAchievementRepository.Setup(x => x.GetAllAchievementsByUserAsync(It.IsAny <PagingInfo>(), It.IsAny <Guid>(), cancellationToken)).ReturnsAsync(returnPage);

            // Act
            var response = await _userAchievementService.GetAllAchievementsByUserAsync(pagingInfo, user.Id, cancellationToken);

            // Assert
            _userAchievementRepository.Verify(x => x.GetAllAchievementsByUserAsync(It.IsAny <PagingInfo>(), It.IsAny <Guid>(), cancellationToken), Times.Once);

            response.Should().BeEquivalentTo(expectedValue);
        }
예제 #6
0
        public async Task DeleteAsync_ValidUserAchievementId(Guid userAchievementId)
        {
            //Arrange
            var userAchievement   = UserAchievementDumbData.GetRandomEntity();
            var user              = userAchievement.User;
            var achievement       = userAchievement.Achievement;
            var cancellationToken = new CancellationToken();

            _userRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).ReturnsAsync(user);
            _userAchievementRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).ReturnsAsync(userAchievement);
            _userAchievementRepository.Setup(x => x.Delete(It.IsAny <UserAchievement>()));
            _unitOfWork.Setup(x => x.SaveChangesAsync(cancellationToken)).Returns(Task.CompletedTask);

            // Act
            await _userAchievementService.DeleteAsync(userAchievementId, cancellationToken);

            // Assert
            _userRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _userAchievementRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _userAchievementRepository.Verify(x => x.Delete(It.IsAny <UserAchievement>()), Times.Once);
            _unitOfWork.Verify(x => x.SaveChangesAsync(cancellationToken), Times.Once);
        }