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);
        }