public void GetGoalChangeViewModelById_WithCorrectData_ShouldReturnCorrectly()
        {
            var user = new ApplicationUser
            {
                Id       = "User1",
                UserName = "******",
            };

            var color = new Color
            {
                Id   = 1,
                Name = "Test",
                Hex  = "TestHex",
            };

            var calendar = new Calendar
            {
                Id    = "1",
                Title = "Default",
                DefaultCalendarColorId = color.Id,
                DefaultCalendarColor   = color,
                User = user,
            };

            var calendarViewModel = new CalendarHabitViewModel
            {
                Id    = calendar.Id,
                Title = calendar.Title,
            };

            var model = new Goal
            {
                Id         = "1",
                Title      = "Test",
                ColorId    = color.Id,
                Color      = color,
                CalendarId = calendar.Id,
                Calendar   = calendar,
                DayTime    = DayTime.Afternoon,
                Duration   = Duration.HourAndHalf,
                Frequency  = Frequency.EveryDay,
                IsActive   = true,
            };

            var viewModel = new GoalViewModel
            {
                Title      = "Test",
                ColorId    = 1,
                CalendarId = "1",
                DayTime    = DayTime.Afternoon.ToString(),
                Duration   = Duration.HourAndHalf.ToString(),
                Frequency  = Frequency.EveryDay.ToString(),
            };

            this.calendarService
            .Setup(x => x.GetAllCalendarTitlesByUserName <CalendarHabitViewModel>(It.IsAny <string>()))
            .Returns(new List <CalendarHabitViewModel> {
                calendarViewModel
            });
            this.colorService.Setup(x => x.GetAllColors()).Returns(new List <Color> {
                color
            });
            this.enumParseService
            .Setup(x => x.GetEnumDescription(It.IsAny <string>(), typeof(DayTime)))
            .Returns(DayTime.Afternoon.ToString());
            this.enumParseService
            .Setup(x => x.GetEnumDescription(It.IsAny <string>(), typeof(Duration)))
            .Returns(Duration.HourAndHalf.ToString());
            this.enumParseService
            .Setup(x => x.GetEnumDescription(It.IsAny <string>(), typeof(Frequency)))
            .Returns(Frequency.EveryDay.ToString());
            this.goalRepository.Setup(x => x.All()).Returns(new List <Goal> {
                model
            }.AsQueryable());
            var actualResult       = this.goalService.GetGoalChangeViewModelById(model.Id, user.UserName);
            var expectedResult     = viewModel;
            var actualResultOutput = actualResult.GoalModel;

            Assert.Equal(expectedResult.Title, actualResultOutput.Title);
            Assert.Equal(expectedResult.CalendarId, actualResultOutput.CalendarId);
            Assert.Equal(expectedResult.ColorId, actualResultOutput.ColorId);
            Assert.Equal(expectedResult.DayTime, actualResultOutput.DayTime);
            Assert.Equal(expectedResult.Duration, actualResultOutput.Duration);
            Assert.Equal(expectedResult.Frequency, actualResultOutput.Frequency);
        }
        public async Task CreateMoreHabitsAsync_WithCorrectData_ShouldReturnCorrectResult()
        {
            var user = new ApplicationUser
            {
                Id       = "User1",
                UserName = "******",
            };

            var color = new Color
            {
                Id   = 1,
                Name = "Test",
                Hex  = "TestHex",
            };

            var calendar = new Calendar
            {
                Id    = "1",
                Title = "Default",
                DefaultCalendarColorId = color.Id,
                DefaultCalendarColor   = color,
                User = user,
            };

            var calendarViewModel = new CalendarHabitViewModel
            {
                Id    = calendar.Id,
                Title = calendar.Title,
            };

            var habits = new List <Habit>
            {
                new Habit
                {
                    Id            = "TestId",
                    Title         = "Test",
                    StartDateTime = new DateTime(2020, 02, 02, 12, 0, 0),
                    EndDateTime   = new DateTime(2020, 02, 02, 12, 30, 0),
                    GoalId        = "1",
                },
            };

            var model = new Goal
            {
                Id         = "1",
                Title      = "Test",
                ColorId    = color.Id,
                Color      = color,
                CalendarId = calendar.Id,
                Calendar   = calendar,
                DayTime    = DayTime.Afternoon,
                Duration   = Duration.HourAndHalf,
                Frequency  = Frequency.EveryDay,
                IsActive   = true,
                Habits     = habits,
            };

            var viewModel = new GoalViewModel
            {
                Title      = "Test",
                ColorId    = 1,
                CalendarId = "1",
                DayTime    = DayTime.Afternoon.ToString(),
                Duration   = Duration.HourAndHalf.ToString(),
                Frequency  = Frequency.EveryDay.ToString(),
            };

            this.goalRepository.Setup(x => x.All()).Returns(new List <Goal> {
                model
            }.AsQueryable());
            await this.goalService.CreateMoreHabitsAsync(calendar.Id);

            this.goalRepository.Verify(x => x.All(), Times.Exactly(2));
            this.habitService.Verify(x => x.GenerateMoreHabitsAsync(It.IsAny <Goal>(), It.IsAny <DateTime>()));
        }
        public void GetGoalChangeViewModel_WithCorrectData_ShouldReturnCorrectResult()
        {
            var user = new ApplicationUser
            {
                Id       = "User1",
                UserName = "******",
            };

            var color = new Color
            {
                Id   = 1,
                Name = "Test",
                Hex  = "TestHex",
            };

            var calendar = new Calendar
            {
                Id    = "1",
                Title = "Default",
                DefaultCalendarColorId = color.Id,
                DefaultCalendarColor   = color,
                User = user,
            };

            var calendarViewModel = new CalendarHabitViewModel
            {
                Id    = calendar.Id,
                Title = calendar.Title,
            };

            var model = new Goal
            {
                Id         = "1",
                Title      = "Test",
                ColorId    = color.Id,
                Color      = color,
                CalendarId = calendar.Id,
                Calendar   = calendar,
                DayTime    = DayTime.Afternoon,
                Duration   = Duration.HourAndHalf,
                Frequency  = Frequency.EveryDay,
                IsActive   = true,
            };

            var viewModel = new GoalViewModel
            {
                Title      = "Test",
                ColorId    = 1,
                CalendarId = "1",
                DayTime    = DayTime.Afternoon.ToString(),
                Duration   = Duration.HourAndHalf.ToString(),
                Frequency  = Frequency.EveryDay.ToString(),
            };

            this.calendarService
            .Setup(x => x.GetAllCalendarTitlesByUserName <CalendarHabitViewModel>(It.IsAny <string>()))
            .Returns(new List <CalendarHabitViewModel> {
                calendarViewModel
            });
            this.colorService.Setup(x => x.GetAllColors()).Returns(new List <Color> {
                color
            });
            var actualResult   = this.goalService.GetGoalChangeViewModel(user.UserName);
            var expectedResult = viewModel;

            Assert.Equal(1, actualResult.Calendars.Count);
            Assert.Equal(1, actualResult.Colors.Count);
            Assert.Equal(4, actualResult.DayTimes.Count());
            Assert.Equal(9, actualResult.Frequencies.Count());
            Assert.Equal(4, actualResult.Durations.Count());
        }