public async Task GetAllAsync_ReturnsReadRequestAchievementModels()
        {
            //Arrange
            int entitiesCount     = 5;
            var cancellationToken = new CancellationToken();

            var achievements            = AchievementDumbData.GetRandomEntities(entitiesCount);
            var users                   = UserDumbData.GetRandomEntities(entitiesCount);
            var listRequestAchievements = RequestAchievementDumbData.GetEntities(achievements, users);
            var pagingInfo              = ReturnPagingInfoDumbData.GetForModel(new PagingInfo(), listRequestAchievements);

            var expectedValue = RequestAchievementDumbData.GetReadRequestAchievementModels(listRequestAchievements, achievements, users);


            _requestAchievementRepository.Setup(x => x.GetAllDataAsync(It.IsAny <PagingInfo>(), cancellationToken)).Returns(Task.FromResult(pagingInfo));
            _userRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns((Guid x) => Task.FromResult(users.FirstOrDefault(y => y.Id == x)));
            _achievementRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns((Guid x) => Task.FromResult(achievements.FirstOrDefault(y => y.Id == x)));

            // Act
            var response = await _requestAchievementService.GetAllAsync(cancellationToken);

            // Assert
            _requestAchievementRepository.Verify(x => x.GetAllDataAsync(It.IsAny <PagingInfo>(), cancellationToken), Times.Once);
            _userRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Exactly(listRequestAchievements.Count));
            _achievementRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Exactly(listRequestAchievements.Count));

            response.Should().BeEquivalentTo(expectedValue);
        }
        public async Task GetByIdAsync()
        {
            var expectedRequestAchievement = RequestAchievementDumbData.GetRandomEntity();
            var cancellationToken          = new CancellationToken();

            //Arrange
            _requestAchievementRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(expectedRequestAchievement));

            // Act
            var result = await _requestAchievementService.GetByIdAsync(expectedRequestAchievement.Id, cancellationToken);

            // Assert
            _requestAchievementRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            result.Should().BeEquivalentTo(expectedRequestAchievement);
        }
        public async Task ApproveAchievementRequestAsync()
        {
            var expectedRequestAchievement = RequestAchievementDumbData.GetRandomEntity();
            var cancellationToken          = new CancellationToken();

            //Arrange
            _requestAchievementRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(expectedRequestAchievement));
            _userAchievementService.Setup(x => x.AddAsync(It.IsAny <Guid>(), It.IsAny <Guid>(), cancellationToken)).Returns(Task.CompletedTask);

            //Arrange for DeleteAsync Function
            _requestAchievementRepository.Setup(x => x.Delete(It.IsAny <RequestAchievement>()));
            _unitOfWork.Setup(x => x.SaveChangesAsync(cancellationToken)).Returns(Task.CompletedTask);

            // Act
            await _requestAchievementService.ApproveAchievementRequestAsync(expectedRequestAchievement.Id, cancellationToken);

            // Assert
            _requestAchievementRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once);
            _requestAchievementRepository.Verify(x => x.Delete(It.IsAny <RequestAchievement>()), Times.Once);
            _userAchievementService.Verify(x => x.AddAsync(It.IsAny <Guid>(), It.IsAny <Guid>(), cancellationToken), Times.Once);
            _unitOfWork.Verify(x => x.SaveChangesAsync(cancellationToken), Times.Exactly(2));
        }