public void OnRefreshed() { // arrange var vm = new FrequencyPatternDetailsViewModel(); var unitOfWork = Mock.Create<IUnitOfWork<IFrequencyPattern>>(Behavior.Loose); var model = Mock.Create<IFrequencyPattern>(Behavior.Loose); Mock.Arrange(() => model.IsNew).Returns(true); Mock.Arrange(() => unitOfWork.Model).Returns(model); var dataportalResult = new DataPortalResult<IUnitOfWork<IFrequencyPattern>>(unitOfWork, null, null); var shell = Mock.Create<IShell>(Behavior.CallOriginal); var baseMethodWasCalled = false; Mock.Arrange(() => shell.ShowStatus(Arg.IsAny<Status>(), false)).DoInstead(() => baseMethodWasCalled = true); vm.WindowManager = new Lazy<IShell>(() => shell); // act var privateAccessor = new PrivateAccessor(vm); privateAccessor.CallMethod("OnRefreshed", new object[] { null, dataportalResult }); // assert Assert.AreEqual(model, vm.Model); Assert.AreEqual(FrequencyPatternType.Daily.ToString(), model.PatternType); // daily Assert.AreEqual(DailyPatternVariant.NumberOfDays.ToString(), model.DailyPatternOption); Assert.AreEqual(1, model.DailyPatternDaysToRecur); // weekly Assert.AreEqual(1, model.WeeklyPatternWeeksToRecur); Assert.AreEqual(false, model.IsSundaySelected); Assert.AreEqual(false, model.IsMondaySelected); Assert.AreEqual(false, model.IsTuesdaySelected); Assert.AreEqual(false, model.IsWednesdaySelected); Assert.AreEqual(false, model.IsThursdaySelected); Assert.AreEqual(false, model.IsFridaySelected); Assert.AreEqual(false, model.IsSaturdaySelected); // monthly Assert.AreEqual(MonthlyPatternVariant.DayByDate.ToString(), model.MonPatOption); Assert.AreEqual(1, model.MonPatRecurDate); Assert.AreEqual(1, model.MonPatByDateOptionMonthsToRec); Assert.AreEqual(TimeIntervalPosition.First.ToString(), model.MonPatTimeIntervalPosition); Assert.AreEqual(1, model.MonPatByPositionOptionMonToRec); Assert.AreEqual(1, model.MonPatMonthsToRec); Assert.AreEqual(DayofWeek.Saturday.ToString(), model.MonPatDayOfWeek); // yearly Assert.AreEqual(1, model.YearPatYearsToRec); Assert.AreEqual(YearlyPatternVariant.DayByDate.ToString(), model.YearPatOption); Assert.AreEqual(Month.January.ToString(), model.YearPatByDateOptionSelectMon); Assert.AreEqual(1, model.YearPatDayOfSelectMon); Assert.AreEqual(TimeIntervalPosition.First.ToString(), model.YearPatTimeIntervalPosition); Assert.AreEqual(DayofWeek.Saturday.ToString(), model.YearPatDayOfWeek); Assert.AreEqual(Month.January.ToString(), model.YearPatByNameOptionSelectMon); Assert.IsTrue(baseMethodWasCalled); // arrange baseMethodWasCalled = false; dataportalResult = new DataPortalResult<IUnitOfWork<IFrequencyPattern>>(null, new Exception(), null); var loggerWasCalled = false; var logger = new ClientLogger(); Mock.Arrange(() => logger.Log(LogSeverity.Error, typeof(FrequencyPatternDetailsViewModel).ToString(), Arg.IsAny<Exception>())).DoInstead(() => loggerWasCalled = true); vm.Logger = logger; var popupMock = PopupMock.Create().NotifyFailureMustBeCalled(Arg.IsAny<Exception>()); vm.ThePopupFactory = popupMock.TheLazyPopupFactory; // act privateAccessor.CallMethod("OnRefreshed", new object[] { null, dataportalResult }); // assert Assert.IsTrue(loggerWasCalled); popupMock.AssertNotifyFailureCalled(); Assert.IsTrue(baseMethodWasCalled); }
public void OnRefreshed() { // arrange var vm = new CalendarDetailsViewModel(); var unitOfWork = Mock.Create<IUnitOfWork<ICalendar>>(Behavior.Loose); var calendar = Mock.Create<ICalendar>(Behavior.Loose); var interval = Mock.Create<ICalendarWorkingInterval>(Behavior.Loose); interval.Weekday = DayOfWeek.Friday.ToString(); var intervalList = new List<ICalendarWorkingInterval> { interval }; Mock.Arrange(() => calendar.WorkingIntervals).Returns(intervalList); Mock.Arrange(() => unitOfWork.Model).Returns(calendar); var dataportalResult = new DataPortalResult<IUnitOfWork<ICalendar>>(unitOfWork, null, null); var shell = Mock.Create<IShell>(Behavior.CallOriginal); var baseMethodWasCalled = false; Mock.Arrange(() => shell.ShowStatus(Arg.IsAny<Status>(), false)).DoInstead(() => baseMethodWasCalled = true); vm.WindowManager = new Lazy<IShell>(() => shell); // act var privateAccessor = new PrivateAccessor(vm); privateAccessor.CallMethod("OnRefreshed", new object[] { null, dataportalResult }); // assert Assert.AreEqual(DayOfWeek.Friday, vm.SelectedDayOfWeek); CollectionAssert.AreEqual(intervalList, (List<ICalendarWorkingInterval>)vm.WorkingIntervals.Source); Assert.IsTrue(baseMethodWasCalled); // arrange baseMethodWasCalled = false; Mock.Arrange(() => calendar.IsNew).Returns(true); ((IList<ICalendarWorkingInterval>)vm.WorkingIntervals.Source).Clear(); // act privateAccessor.CallMethod("OnRefreshed", new object[] { null, dataportalResult }); // assert Assert.AreEqual(DayOfWeek.Sunday, vm.SelectedDayOfWeek); CollectionAssert.AreEqual(intervalList, (List<ICalendarWorkingInterval>)vm.WorkingIntervals.Source); Assert.IsTrue(baseMethodWasCalled); // arrange baseMethodWasCalled = false; dataportalResult = new DataPortalResult<IUnitOfWork<ICalendar>>(null, new Exception(), null); var loggerWasCalled = false; var logger = new ClientLogger(); Mock.Arrange(() => logger.Log(LogSeverity.Error, typeof(CalendarDetailsViewModel).ToString(), Arg.IsAny<Exception>())).DoInstead(() => loggerWasCalled = true); vm.Logger = logger; var popupMock = PopupMock.Create().NotifyFailureMustBeCalled(Arg.IsAny<Exception>()); vm.ThePopupFactory = popupMock.TheLazyPopupFactory; // act privateAccessor.CallMethod("OnRefreshed", new object[] { null, dataportalResult }); // assert Assert.IsTrue(loggerWasCalled); popupMock.AssertNotifyFailureCalled(); Assert.IsTrue(baseMethodWasCalled); }