public void TestEveryWeekOnSaturdays()
        {
            //Arrange
            int            numberOfRecurrences = 3;
            WeeklySchedule item = new WeeklySchedule
            {
                RecurrenceType                = WeeklySchedule.RecurrenceTypeEnum.Weekly,
                WeeklyEveryNWeeks             = 1,
                WeeklyDayOfWeekSunday         = false,
                WeeklyDayOfWeekMonday         = false,
                WeeklyDayOfWeekTuesday        = false,
                WeeklyDayOfWeekWednesday      = false,
                WeeklyDayOfWeekThursday       = false,
                WeeklyDayOfWeekFriday         = false,
                WeeklyDayOfWeekSaturday       = true,
                RecurrenceStartDate           = new DateTime(2019, 1, 5),
                RecurrenceEndAfterNSelected   = true,
                RecurrenceEndAfterNOccurences = numberOfRecurrences
            };
            int      numberOfDaysSelected = 1;
            DateTime lastDate             = item.NormalizeDate(item.RecurrenceStartDate.AddDays(((item.WeeklyEveryNWeeks * 7) * item.RecurrenceEndAfterNOccurences) - (item.WeeklyEveryNWeeks * 7) + numberOfDaysSelected - 1));

            //Act
            item.ProcessFutureDates();

            //Assert
            Assert.AreEqual(item.Name, "Weekly every " + item.WeeklyEveryNWeeks + " weeks, on Saturdays, for a total of " + item.RecurrenceEndAfterNOccurences * numberOfDaysSelected + " FutureDates");
            DateTime[] dates = item.FutureDates.ToArray();
            Assert.AreEqual(lastDate, dates[dates.Length - 1]);
        }
        public void TestControllerJSONGenerationForWeek()
        {
            //Arrange
            WeeklySchedule item = new WeeklySchedule
            {
                RecurrenceType                = WeeklySchedule.RecurrenceTypeEnum.Weekly,
                WeeklyEveryNWeeks             = 1,
                WeeklyDayOfWeekSunday         = true,
                WeeklyDayOfWeekMonday         = false,
                WeeklyDayOfWeekTuesday        = false,
                WeeklyDayOfWeekWednesday      = false,
                WeeklyDayOfWeekThursday       = false,
                WeeklyDayOfWeekFriday         = false,
                WeeklyDayOfWeekSaturday       = false,
                RecurrenceStartDate           = new DateTime(2019, 3, 10),
                RecurrenceEndAfterNSelected   = true,
                RecurrenceEndAfterNOccurences = 3
            };
            ScheduleItem scheduleItem = new ScheduleItem
            {
                WeeklySchedule = item
            };
            ScheduleItemController controller = new ScheduleItemController();

            //Act
            item.ProcessFutureDates();
            string       json          = controller.CreateJSON(scheduleItem);
            ScheduleItem processedItem = controller.ProcessJSON(json);

            //Assert
            Assert.IsTrue(json != null);
            Assert.AreEqual(processedItem.ScheduleItemType, "Weekly");
            Assert.IsTrue(processedItem.DailySchedule == null);
            Assert.IsTrue(processedItem.WeeklySchedule != null);
            Assert.IsTrue(processedItem.MonthlySchedule == null);
            Assert.IsTrue(processedItem.YearlySchedule == null);
        }