public async Task <UserStatisticAggregate> GetAsync(Guid userId)
        {
            EnglishMultimediaStatistic englishMultimediaStatistic = await _englishMultimediaStatisticRepository.GetByUserId(userId);

            EnglishTaskStatistic englishTaskStatistic = await _englishTaskStatisticRepository.GetByUserId(userId);

            var userStatisticAggregate = new UserStatisticAggregate(userId, englishMultimediaStatistic, englishTaskStatistic);

            return(userStatisticAggregate);
        }
        public static UserStatisticAggregate GetModel(Guid userId)
        {
            var completedEnglishMultimedia = CompletedEnglishMultimediaFactory.GetSimpleModels(20, userId);
            var completedTasks             = CompletedEnglishTaskFactory.GetSimpleModels(20, userId);
            var taskStatistic       = new EnglishTaskStatistic(completedTasks);
            var multimediaStatistic = new EnglishMultimediaStatistic(completedEnglishMultimedia);

            var userStatisticAggregate = new UserStatisticAggregate(userId, multimediaStatistic, taskStatistic);

            return(userStatisticAggregate);
        }
        public void GetFullStatistic_ReturnExpectedResult(
            Guid userId,
            EnglishMultimediaStatistic englishMultimediaStatistic,
            EnglishTaskStatistic englishTaskStatistic,
            FullStatistic expectedFullStatistic)
        {
            // Arrange
            var userStatisticAggregate = new UserStatisticAggregate(userId, englishMultimediaStatistic, englishTaskStatistic);

            // Act
            var fullStatistic = userStatisticAggregate.GetFullStatistic();

            // Arrange
            fullStatistic.Should().BeEquivalentTo(expectedFullStatistic);
        }
        public async Task GetFullStatisticByUserId_ReturnsExpectedResult(
            Guid userId,
            UserStatisticAggregate userStatisticAggregate,
            FullStatisticModel expectedResult)
        {
            // Arrange
            var applicationMapper       = new ApplicationMapper();
            var userAggregateRepository = Substitute.For <IUserStatisticAggregateRepository>();

            userAggregateRepository
            .GetAsync(Arg.Any <Guid>())
            .Returns(userStatisticAggregate);

            var service = new GeneralStatisticService(userAggregateRepository, applicationMapper);

            // Act
            FullStatisticModel fullStatistic = await service.GetFullStatisticByUserId(userId);

            // Arrange
            fullStatistic.Should().BeEquivalentTo(expectedResult);
        }
        public async Task GetPerDayForLastMonthStatisticByUserId_ReturnsExpectedResult(
            Guid userId,
            UserStatisticAggregate userStatisticAggregate,
            IReadOnlyList <PerDayStatisticModel> expectedResult)
        {
            // Arrange
            var applicationMapper       = new ApplicationMapper();
            var userAggregateRepository = Substitute.For <IUserStatisticAggregateRepository>();

            userAggregateRepository
            .GetAsync(Arg.Any <Guid>())
            .Returns(userStatisticAggregate);

            var service = new GeneralStatisticService(userAggregateRepository, applicationMapper);

            // Act
            IReadOnlyList <PerDayStatisticModel> perDayModels = await service.GetPerDayForLastMonthStatisticByUserId(userId);

            // Arrange
            perDayModels.Should().BeEquivalentTo(expectedResult);
        }